tc课后一题——递归算法

来源:百度知道 编辑:UC知道 时间:2024/05/24 02:28:06
tc课后一题——递归算法
long fib(int n)
{
if(n>2)
return(fib(n-1)+fib(n-2));
else
return(2);
}
main()
{
printf("%ld\n",fib(6));
}
讲下思路~~谢谢~~return(fib(n-1)+fib(n-2)); 这里我不会~~

fib(1)=fib(2)=2;fib(3)=fib(2)+fib(1);
当你求f(4)的时候,他执行到return(fib(n-1)+fib(n-2));
其实就是 f(3)+f(2)
而f(3)怎么求,他会递归调用函数 所以f(3)=f(2)+f(1)
以此类推
return 是返回出结果
而return 里面又调用了fib()函数他回循环的执行下去
直到满足else条件,他就直接返回2了

这是求菲波拉契数列的程序,可以在网上找一下相关注解,有很多。

菲波拉契数列相关信息:

http://baike.baidu.com/view/386927.html

fib(1)=fib(2)=2;fib(3)=fib(2)+fib(1);
从n>=3开始,后面的数等于前两个数之和