黑马程序员技术交流社区
标题:
忽然看到一个计算题,求指点
[打印本页]
作者:
夏的四季
时间:
2014-3-5 19:57
标题:
忽然看到一个计算题,求指点
本帖最后由 夏的四季 于 2014-3-5 21:36 编辑
class demo
{
public static void main(String[] args) {
System.out.println(f(20));
}
private static int f(int n) {
if (n==1 || n==2) {
return 1;
}else {
return f(n-1)+f(n-2);
}
}
}
复制代码
这是怎么计算的?结果是6765。为什么啊,说说计算过程
作者:
天凌蓝
时间:
2014-3-5 20:09
其实这是一个递归方法,当这式子其实就是f(n)=f(n-1)+f(n-2); f(1)=f(2)=1; 其实他就是一个
求Fibonacci数列的第N项
作者:
volvoxc
时间:
2014-3-5 20:17
斐波那契数列,1,1,2,3,5,8,13。。。第一项和第二项都是1,从第三项开始,每一项都是前两项的和。
作者:
天凌蓝
时间:
2014-3-5 20:22
这个数列除了前两项f(1)=f(2)=1之外,后面的其他每一项都等于前两项之和。就比如你求f(20)就等于f(19)+f(18),而你又需要求f(19)和f(18)的值就分别为f(19)=f(18)+f(17) ,f(18)=f(17)+f(16)....这样依次求到f(3)=f(2)+f(1),通过递归就可以把值返回来。
作者:
夏的四季
时间:
2014-3-5 20:24
天凌蓝 发表于 2014-3-5 20:09
其实这是一个递归方法,当这式子其实就是f(n)=f(n-1)+f(n-2); f(1)=f(2)=1; 其实他就是一个求Fibonacci数列 ...
很赞,原来是这样啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2