函数应用题(求助)
long fib(int n){if(n>2)
return(fib(n-1)+fib(n-2));
else
return(2);
}
main()
{ printf("%d\n",fib(3));
该程序的输出结果是 4
我算的是3 ,为什么啊??
小弟在这感谢了~~
----------------解决方案--------------------------------------------------------
long fib(int n)
{if(n>1)
return(fib(n-1)+fib(n-2));
else
return(1);
}
----------------解决方案--------------------------------------------------------
long fib(int n)
{if(n>2)
return(fib(n-1)+fib(n-2));
else
return(2);
}
main()
{ printf("%d\n",fib(3));
程序分析:
首先将 3 传给 fib()中的n:
第一步: n=3; 第二步:实现递归调用,将2传给fib()函数(n=2)
if(n>2) 因为n=2,所以做else部分,所以函数fib(2)的值是2,
return(fib(2)+fib(n-2); 又返回函数调用处,"return(2+fib(n-2)),要知道这里的
reutrn(2) n是等于3的。又调用return(2+fib(1));
n=1做else部分,又返回fib(1)的值为2。
所以 return(2+2);结果为4。
----------------解决方案--------------------------------------------------------
正解,学习
----------------解决方案--------------------------------------------------------
完全正确!递归调用!认真分析就对了!
----------------解决方案--------------------------------------------------------
这样呢?
long fib(int n)
{if(n>=2)
return(fib(n-1)+fib(n-2));
else
return(2);
}
----------------解决方案--------------------------------------------------------
无解,死循环。
----------------解决方案--------------------------------------------------------
两个return(2);当然是4
----------------解决方案--------------------------------------------------------
very good!
----------------解决方案--------------------------------------------------------
谢谢各位了!
----------------解决方案--------------------------------------------------------