鱼C考场C语言第四章测试题第9题,求解惑
#include <stdio.h>int fun(int n)
{
int s;
if(n==1||n==2)
{
s = 2;
}
else
{
s = n-fun(n-1);
}
return s;
}
main()
{
printf("%d", fun(3));
}
最后S结果怎么会是1呢,调试了但不知道为何从return s跳到s = n-fun(n-1);求详细解释
这个很简单啊,我给你写下程序的步骤:
1.执行fun(3),将3带入fun执行-->判断n=3后执行s=n-fun(n-1)=3-fun(3-1)=3-fun(2)
2.再将2带入fun,判断n=2后执行s=2,然后return s(s==2),fun(2)==2
3.1中的s=3-fun(2)=3-2=1,return s(s==1)
4.所以结果是1、
这是我没有看汇编代码的解释 maomingkun 发表于 2013-12-6 22:26 static/image/common/back.gif
这个很简单啊,我给你写下程序的步骤:
1.执行fun(3),将3带入fun执行-->判断n=3后执行s=n-fun(n-1)=3 ...
恩,谢谢了 懂了 :lol::lol:新人第一次来
页:
[1]