#include <stdio.h>
int sum( int n );
int main()
{
int n;
puts("请输入正整数n:");
scanf("%d", &n);
printf ("1到%d的和等于:%d\n", n, sum(n));
return 0;
}
int sum( int n ){
if(n > 1){
return n + sum(n - 1);
} else if(n <= 0){ // 当输入的 n 小于等于 0时,返回0.
return 0;
}else { // 当n != 1时结束递归循环
return 1;
}
}
运行结果:
例如:
当 n = 5时,sum函数第一次执行:
判断 5 > 1 | return 5 + sum(5 - 1) | 5 + 等待sum(5 - 1)函数执行结束 |
---|
sum函数第二次执行:
sum(5 - 1) = sum(4)
判断 4 > 1 | return 4 + sum (4 - 1) | 4 + 等待sum(4 - 1)函数执行结束 |
---|
sum函数第三次执行:
sum(4 - 1) = sum(3)
判断 3 > 1 | return 3 + sum (3 - 1) | 3 + 等待sum(3 - 1)函数执行结束 |
---|
sum函数第四次执行:
sum(3 - 1) = sum(2)
判断 2 > 1 | return 2 + sum (2 - 1) | 2 + 等待sum(2 - 1)函数执行结束 |
---|
sum函数第五次执行:
sum(2 - 1) = sum(1)
判断 1 > 1 该等式不成立 | return 1 | 返回结果 1 |
---|
第五次返回结果:return 1 逐层往上返回,
第四次运行结束:(retrun 2 + 1) = return 3;
第三次运行结束:(return 3 + 2 + 1)= return 6;
第二次运行结束:(return 4 + 3 + 2 + 1)= return 10;
第一次运行结束:(return 5 + 4 + 3 + 2 + 1)= return 15;
最后程序结束 返回最后结果: 15