叁er 发表于 2013-12-6 22:06:10

鱼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);求详细解释



maomingkun 发表于 2013-12-6 22:06:11

这个很简单啊,我给你写下程序的步骤:
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、
这是我没有看汇编代码的解释

叁er 发表于 2013-12-6 23:01:52

maomingkun 发表于 2013-12-6 22:26 static/image/common/back.gif
这个很简单啊,我给你写下程序的步骤:
1.执行fun(3),将3带入fun执行-->判断n=3后执行s=n-fun(n-1)=3 ...

恩,谢谢了 懂了

yangyang20222 发表于 2013-12-7 19:18:04

:lol::lol:新人第一次来
页: [1]
查看完整版本: 鱼C考场C语言第四章测试题第9题,求解惑