递归函数从1加到100中return n+sum(n-1)是什么意思?sum(n-1)是啥情况呀?

#include<stdio.h>intsum(int);intmain(){intn=100,s=0;s=sum(n);printf("1到100的和为:%d\n",s... #include <stdio.h>
int sum(int);
int main()
{
int n=100,s=0;
s=sum(n);
printf("1到100的和为:%d\n",s);
return 0;
}
int sum(int n)
{
if(n==1)
return 1;
else
return n+sum(n-1);
}
展开
 我来答
墓骨V杀生
2016-12-24 · 超过13用户采纳过TA的回答
知道答主
回答量:29
采纳率:0%
帮助的人:25.1万
展开全部
关于递归,你可以这样想:
不去管这个函数是怎样实现的,你先记住这个函数的目的是什么。
比如sum函数,你只需要知道:
sum(n)的功能是求1~n的和;
sum(n-1)的功能是求1~n-1的和;
sum(n-2)的功能是求1~n-2的和;
... ...
sum(1)的功能是求1~1的和即1。
那么问题就好解决了。n+sum(n-1)就是n加上【1到n-1的和】,加起来不就是1~n的和么。依次类推,当遇到递归终止条件时结束函数并返回结果。也就是说该函数返回的n+sum(n-1)就是1~n的和
更多追问追答
追问
懂了!不过sum(n-1)是求1到n-1的和,这个功能是程序定义的吗?我们使用就好了?
追答
我的天。。。。你并没有懂啊啊啊啊啊。。。这个功能是我们自己定义的啊,这就是递归的本质。抛开具体实现把问题细化,等到问题划分到最小时一并解决。也就是说,不管是从1加到10,还是从1加到100,都是加,比如当我知道了从1加到99的和等于A,不就知道了从1加到100的和等于A+100么,当我知道了从1加到98的和,不就知道了从1加到99的和不就是再加上个99么?。。。 。。。当我知道了从1加到1的和,不就等于知道了从1加到2的和?
也就是说,sum()函数有个终止条件的,就是当n==1的时候,我算出来了这个函数的值是1,那么sum(2)中,执行return 2+sum(1)就是说,我要求1~2的和,是2加上1~1的和sum(1),依次类推。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式