您的位置:首页 > 其它

这样的递归,我实在无语

2011-10-30 15:39 211 查看
谈起递归,有一好同学认为递归不过如此,甚至还结合堆栈之类讲了讲递归的执行。于是请他将1+2+3+......+100用递归实现。结果为:

#include <stdio.h>

int sum(int n)

{

if(n<100)

return n+sum(n+1);

else

return 100;

}

void main()

{

printf("%d\n", sum(1));

}

看着他的兴奋劲,我实在无语。

#include <stdio.h>

int sum(int n)

{

if(n == 1)

return 1;

else

return n+sum(n-1);

}

void main()

{

printf("%d\n", sum(100));

}

函数sum的作用为计算1+2+...+n的和。思路也很简单只要计算出1+2+...+(n-1)的和,再加上n的和即问题的解了,sum(n)可以计算1+2+...+n的和,显然sum(n-1)就可以计算1+2+...+(n-1)的和,规模变小,问题重复......

可是他的答案也对,他的程序在理论上也没有问题......

最后,只能表扬之后请他有时间看一下我的关于递归的视频教程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐