新人求教
#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));
}
这道题是什么意思 {:10_254:} 首先,程序定义了一个函数叫做“fun”,在fun函数内它又可以自己调用自己,形成了嵌套函数。
举个栗子,比如说,在main函数里要输出fun(3)的值,首先,主函数调用了子函数,现在进入了子函数里,目前n=3,n既不是1也不是2,所以s=3-fun(2),而fun(2)有调用到了fun函数,此时参数为2,满足n=2,所以此时s=2,返回s值,即fun(2)=s=2,再跳出到上一个算式,即此时s=3-fun(2)=3-2=1,返回s值,所以fun(3)=1。当n不等于3时,也是类似的,一层一层往里进,算到最后一个值时再一层一层往外出。
这种方法叫做递归法,可以百度一下扩展一下。 Shiryan 发表于 2016-12-7 21:56
首先,程序定义了一个函数叫做“fun”,在fun函数内它又可以自己调用自己,形成了嵌套函数。
举个栗子,比 ...
可是这里从哪体现出fun=s呢 kljoij 发表于 2016-12-10 22:58
可是这里从哪体现出fun=s呢
你看这个函数刚开始定义的时候是有返回值的是个int类型的值,最后有这条语句 return s; 说明fun(n)=s的。
建议你先去弄明白函数那一章节的知识,这样应该就比较好理解了。
页:
[1]