golffalcon - 2010-5-28 10:15:00
#include <stdio.h>
long fib(int n)
{if (n>2) return (fib(n-1)+fib(n-2));
else return (2);
}
main()
{
printf("%ld\n",fib(6));
}
答案是16,不过,我想问下,这个16是怎么做出来的?步骤能否详细的说明下?我实在想不出来。
(划红字的是主要的想不通的地方)。
用户系统信息:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
鬼鬼小猫咪 - 2010-5-28 10:20:00
电脑盲路过,帮顶了.
茶馆小二 - 2010-5-28 10:37:00
n flb(n-1) + flb(n-2) return
6 flb(5) + flb(4) ?
5 flb (4) + flb (3) ?
4 flb(3) + flb(2) flb(3) + 2 #因为flb(2) = 2
3 flb(2) + flb (1) 2 + 2 # 所以依次计算
flb(3) = 4, flb(4) = flb (3) + flb (2) = 6, flb(5) = flb (4) + flb (3) = 6 + 4 = 10, flb( 6 ) = flb (5) + flb (4) = 10 + 6 = 16
?表示在当前那个步骤无法确定呢,因为结果依赖于下一个层次的计算,所以继续列表,但是由于程序里说了只要n不大于2了,都返回2,所以flb(2) flb (1)都能确定了就
鬼鬼小猫咪 - 2010-5-28 10:38:00
小二电脑帝啊:kaka8:
茶馆小二 - 2010-5-28 10:43:00
抄的~
鬼鬼小猫咪 - 2010-5-28 10:45:00
茶馆小二 - 2010-5-28 10:54:00
有看没有懂~
鬼鬼小猫咪 - 2010-5-28 10:57:00
额,谢谢...我再研究研究.....
golffalcon - 2010-5-28 12:49:00
谢谢了,版主,原来是我的计算错了。:kaka6:
茶馆小二 - 2010-5-28 14:28:00
不客气~~
© 2000 - 2026 Rising Corp. Ltd.