#include
using namespace std;
int main()
{
int f(int);
int n, s;
cout << "input the number n:";
cin >> n;
s = f(n);
cout << "The result is " << s << endl;
return 0;
}
int f(int n)
{
if (n == 1)
return 1;
else
return (n * n + f(n - 1));
}
1.这里没有对n值的变化 他是怎么实现正确运行的?
2.如果最后那句f(n-1)兼有赋值功能的话 那为什么n没有变为负值无限运行下去?
刚刚接触c 还不是特别懂
执行过程如下:
假如输入n=4,执行f函数
f(4) : n==1不成立,执行 else 中的 4*4 + f(3)
f(3) : n==1不成立,执行 else 中的 3*3 + f(2)
f(2) : n==1不成立,执行 else 中的 2*2 + f(1)
f(1) : n==1成立,return 1
所以逆推回去就是:
f(1)=1
f(2)=2*2+f(1)=2*2+1
f(3)=3*3+f(2)=3*3+2*2+1
f(4)=4*4+f(3)=4*4+3*3+2*2+1