鱼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);求详细解释
不小心点到已解决了 求指点 我也是一个新学习c的初学者,这道题我看懂了! 我哦的理解这里说说,
首先执行的是main函数,当printf时,把fun(3)的值送到int fun()函数中,然后if的第一个条件不符合,就执行else,s=n-fun(n-1)这里是关键,呵呵,遇到fun(n-1)的时候,又把fun()送到int fun()函数中,这样,就符合if的第一个条件,也就是s=2,然后回到s=n-fun(n-1)这里,这里的n=3,fun(n-1)=2,运算后就s=1! 哈哈!:lol::lol: 我感觉这里像是一个循环一样! 要是n-1
是大于2,那就还要跟复杂了!以上纯属个人理解!!! helehappy 发表于 2013-12-6 22:29 static/image/common/back.gif
我也是一个新学习c的初学者,这道题我看懂了! 我哦的理解这里说说,
首先执行的是main函数,当printf时, ...
先谢谢了,又调试了代码一遍,终于理解了
页:
[1]