#include<iostream.h>
int sum(int n)
{
int t=0;
if(n<1) t=0;
else t=n+sum(n-1);//观察得出,这里外面的n与sum函数参数里面的n并不同步改变,比如下面主函数语句输入3,则t=3+sum(3-1)得t=n(3)+n(2)=5,然后t(5)=n(5)+sum(2-1)得t=n(5)+n(1)=6,这时上面if语句判断的n是第一个累加的n还是函数参数里的n呢?如果是函数参数里的n,那当t(6)=n(6)+n(0),不就满足上面if语句n<1了?这样最终仍然不会返回想求的和,而是t=0啊?请朋友们清楚的解释下,感谢了!
return t;
}
void main()
{
int a,z;
cout<<"请输入一个数,系统将自动求和:";
cin>>a;
z=sum(a);
cout<<z<<endl;
}
但是最终会返回累加和,我就是不明白为什么可以避免t=0,感觉应该函数里的n减到1就不会减下去而是return出累加和了,但是到底是根据什么不用继续将n减到0而跳出循环得出累加和的?? (程序运行结果都没问题)