您的位置:首页 > 其它

证明Fibonacci数列与黄金分割的关系

2009-05-06 00:20 169 查看
某CSDN网友问:

1,1,2,5,8,13.....请问这个数列第30项是什么? 用java实现

玄机逸士的回答:

楼主的题目是不是少了一个数字3?否则没有规律可言,无法得出第30项数据,正确的题目应该是:
1,1,2,3,5,8,13.....请问这个数列第30项是什么? 用java实现

很明显这是一个Fibonacci数列,代码如下:
package com.pnft.fibonacci;

public class Fibonacci
{
static int calculateFibonacci(int n)
{
if(n < 3)
{
return 1;
}
else
{
return calculateFibonacci(n-1) + calculateFibonacci(n-2);
}
}
public static void main(String[] args)
{
System.out.println(calculateFibonacci(30));
}
}

运行程序得到的结果为:
832040
这就是第30项的数据。

Fibonacci数列本质上就是:一个数字等于它前面两项的和,比如2 = 1 + 1; 3 = 1 + 2;5 = 2 + 3;...
关于Fibonacci数列有很多很有意思的事情,其中一个就是当n->无穷大时,F(n-1)/F(n) = 0.618... 黄金分割

这是可以证明的(此结论网上颇为多见,然鲜有证明者):
假定Fibonacci数列有n项 F(1),F(2),F(3),F(4),F(5),F(6)...,F(n-2),F(n-1),F(n)
根据Fibonacci数列的定义,我们可以知道:
F(n) = F(n-1) + F(n-2)                   (0)
现在我们来算算F(n) / F(n-1),将(0)式代入:


很显然,当n->无穷大的时候,


(1)


,那么

那么当n->无穷大的时候,(1)式将变成:


(2)
解(2),得到:



Fibonacci两项相比,不可能出现负数,因此负数解没有意义,舍去之。那么最后得到


,即


得证!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: