C语言递归练习

来源:互联网 发布:喝咖啡会难怀孕吗 知乎 编辑:程序博客网 时间:2024/04/30 10:24

1、炮弹一样的球状物体,能够堆积成一个金字塔,在顶端有一个炮弹,它坐落在一个4个炮弹组成的层面上,而这4个炮弹又坐落在一个9个炮弹组成的层面上,以此类推。写一个递归函数CannonBall,这个函数把金字塔的高度作为参数,并且返回它所包括的炮弹数量。函数必须按照递归方式实现,不可以使用迭代结构,例如while或for

int CannonBall(int h){if(h == 1) return 1;elsereturn CannonBall(h-1) + pow(h,2);}int main(void){printf("%d\n",CannonBall(4));return 0;}

2、使用C编写一个指数函数,实现n^k

int RaiseToPower(int n, int k){if(k == 0)return 1;elsereturn n * RaiseToPower(n,k -1);}int main(){printf("%d\n",RaiseToPower(3,4));return 0;}

3、使用欧几里得公式写一个递归函数gcd(m,n),用来计算m与n的最大公约数.

int gcd(int m, int n){if(m % n ==0)return n;elsereturn gcd(n,m % n);}int main(){printf("%d\n",gcd(18,4));return 0;}

 4、写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19

int DigitSum(int n){if(n < 10) return n;elsereturn ((n % 10) + DigitSum(n / 10));}int main(){printf("%d\n",DigitSum(1729));return 0;} 

 5、整数n的数字根是如下定义的:它是一个整数的所有数字的和,反复相加,直到只剩下一位数字为止。例如:1729的digital root按照如下的步骤计算:

step 1:    1+7+2+9   ----->  19

step 2:    1+9           ----->  10

step 3:    1+0           ------>  1

因为第三步的结果是1,所以1就是数字根的值。

      写一个函数DigitalRoot(n),返回参数的根,注意:写一个纯粹的、不使用任何循环结构的递归函数。

int DigitSum(int n){if(n < 10) return n;elsereturn ((n % 10) + DigitSum(n / 10));}int DigitalRoot(int n){if(n < 10)return n;elsereturn DigitalRoot(DigitSum(n));}int main(){printf("%d\n",DigitalRoot(1729));return 0;} 

6、计算组合数C(n,k)

int Comb(int n, int k){if(k == 0 || n == k) return 1; elsereturn (Comb(n - 1,k - 1) + Comb(n - 1,k));}int main(){int i;for(i = 0; i <= 6; i++){printf("%d ",Comb(6,i));}printf("\n");return 0;}

7、将十进制数转换为二进制数:

非递归算法:

void translate(int n)  //将10进制转换为8位的二进制    {        int a[10];        int i,j;        i=0;        while(1)        {            a[i++]=n%2;            if(n/2==0) break;            n/=2;        }        i--;        for(j=1; j<8-i; j++)        {            printf("0");        }        for(j=i; j>=0; j--)        {            printf("%d",a[j]);        }    }  
递归算法

void binary(unsigned long n)  {      int r;      r = n%2;      if(n >= 2)          binary(n / 2);      putchar('0' + r);      return;  }  


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 背带牛仔裤大了怎么办 背带裤大了怎么办视频 刷销量卡单怎么办 支付宝保证金被骗怎么办 宝贝被降权30天怎么办 天猫店铺被降权怎么办 哺乳期晚上溢奶怎么办 文胸带子断了怎么办 哺乳期喝了奶茶怎么办 真空胎钢圈漏气怎么办 自行车钢圈歪了怎么办 铁皮烟囱漏烟怎么办 宽松连衣裙显胖怎么办 牛仔裙老是卷边怎么办 毛边牛仔裙卷边怎么办 牛仔裤短裤卷边怎么办 牛仔裙太宽了怎么办 牛仔裙腰围小了怎么办 牛仔a字裙大了怎么办 牛仔a字裙易变形怎么办 红色皮衣染色了怎么办 羽绒服干了结块怎么办 羽绒服手洗后鸭毛堆在一起怎么办 白色羽绒服发霉了怎么办 早晨起床双脚冷怎么办 黑色棉衣粘毛怎么办 貂皮大衣旧了怎么办 pu皮床头掉皮怎么办 背心领子大怎么办鸡心 羊毛裙子缩水了怎么办 背带裙背带老掉怎么办 背带裙背带坏了怎么办 黑色衣服发红了怎么办 公司拖欠离职员工工资怎么办 windows系统坏了怎么办 背带裙肩带总掉怎么办 四个月宝宝干咳怎么办 4个多月宝宝干咳怎么办 小孩吃饭不嚼怎么办 四个月宝宝积食怎么办 新生儿睡枕头了怎么办