|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这段代码我有两个问题
1.程序功能:实现如下算式:S = 5 + (s = 4 + (s = 3 + (s = 2 + (s = 2))))--------是否正确?
2.int main()里面不是一直调用 fun 函数吗,不是应该最后一次调用fun函数时才进入printf 语句吗 为什么终端会输出 5 个数, 我认为应该就输出最后 16 这个数呀
请各位大佬指点指点
//Think Different !!!
/*
//程序功能:实现如下算式:S = 5 + (s = 4 + (s = 3 + (s = 2 + (s = 2))))
*/
#include <stdio.h>
int fun(int n)
{
int s;
if(n < 2)
s = 2;
else
s = n + fun(n - 1);
printf("%d\t", s);
return s;
}
int main()
{
int k;
k = fun(5);
printf("\nk = %d", k);
return 0;
}
为什么终端会输出 5 个数>>>
递归递归,递完之后就有归。你的fun函数只有一个递归出口,所以每次调用都会打印一次。
if else里面可以直接返回出去了,当然,去掉fun里面的打印s的调用,也可以去掉5次打印
|
|