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

 int CannonBall(int h)
{
if(h == ) return ;
else
return CannonBall(h-) + pow(h,);
} int main(void)
{
printf("%d\n",CannonBall());
return ;
}

C代码

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

 int RaiseToPower(int n, int k)
{
if(k == )
return ;
else
return n * RaiseToPower(n,k -);
} int main()
{
printf("%d\n",RaiseToPower(,));
return ;
}

C代码

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

 int gcd(int m, int n)
{
if(m % n ==)
return n;
else
return gcd(n,m % n);
} int main()
{
printf("%d\n",gcd(,));
return ;
}

C代码

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

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

C代码

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 < )
return n;
else
return ((n % ) + DigitSum(n / ));
} int DigitalRoot(int n)
{
if(n < )
return n;
else
return DigitalRoot(DigitSum(n));
} int main()
{
printf("%d\n",DigitalRoot());
return ;
}

C代码

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

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

C代码

7、将一个整数作为字符串打印

 #include<stdio.h>

 void printd(int n)
{
if(n < ) {
putchar('-');
n = -n;
}
if(n / )
printd(n / );
putchar(n % + '');
} int main()
{
int a = ;
printd(a);
printf("\n");
return ; }

C代码

8、运用上面printd函数的设计思想编写一个递归版本的itoa函数,即通过递归函数把整数变为字符串

 #include<stdio.h>

 void itoa(int n, char *s)
{
static int i;
if(n / )
itoa(n / , s);
else {
i = ;
if(n < )
s[i++] = '-';
}
s[i++] = abs(n) % + '';
s[i] = '\0';
} int main()
{
char s[];
int n = ;
itoa(n, s);
printf("%s\n",s);
return ; }

C代码

9、编写一个递归版本的reverse(s)函数,以将字符串s转置

 #include<stdio.h>

 void reverser(char *s, int i, int len)
{
int c, j;
j = len - (i + );
if(i < j) {
c = s[i];
s[i] = s[j];
s[j] = c;
reverser(s, ++i, len);
}
} void reverse(char *s)
{
int len;
len = strlen(s);
reverser(s, , len);
} int main()
{
char s[];
gets(s);
reverse(s);
printf("%s\n",s);
return ;
}

C代码

最新文章

  1. &lt;JavaScript语言精粹&gt;--&lt;读书笔记三&gt;之replace()与正则
  2. JavaScript深入浅出6-函数和作用域
  3. PDO预处理
  4. android Activity生命周期(设备旋转、数据恢复等)与启动模式
  5. 【Git】笔记1
  6. python的中文编码问题
  7. JavaScript函数绑定
  8. SharePoint 2013 Nintex Workflow 工作流帮助(十一)
  9. .NET Async/Await 最佳实践
  10. 聚焦 SQL 数据库活动异地复制
  11. Android 读取手机某个文件夹目录及子文件夹中所有的txt文件
  12. AngularJS实现表单手动验证和表单自动验证
  13. Mac下配置node.js环境(Mac 10.12)
  14. 剥掉层层外衣后的RPC是什么样子的?
  15. Java学习导航
  16. UITextField属性及方法说明
  17. java.lang.NumberFormatException 错误及解决办法
  18. Windows添加用户和组命令
  19. vm参数配置的理解
  20. 【刷题】LOJ 6004 「网络流 24 题」圆桌聚餐

热门文章

  1. Android 获取内存信息
  2. iOS开发异常处理教程
  3. Two FIFOs of length 253 with 8-bits
  4. css3-rem
  5. C#------如何使用Swagger调试接口
  6. Dubbo -- 系统学习 笔记 -- 示例 -- 多版本
  7. Spring-Mybatis --- 配置SqlSessionFactoryBean,整合Spring-Mybatis
  8. 转载用sql语句计算出mysql数据库的qps,tps,iops性能指标
  9. Python学习--判断变量的数据类型
  10. 使用Xcode自带的单元测试