首页 算命 正文

斐波那契算命

1. 算算兔子,大家进来算算啊,很有趣的

第一个月小兔子没有繁殖能力,所以还是一对;

两个月后,生下一对小兔民数共有两对;

三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对;

------

依次类推可以列出下表:

经过月数:---0---1---2---3---4---5---6---7---8---9--10--11--12

兔子对数:---1---1---2---3---5---8--13--21--34--55--89-144-233

表中数字1,1,2,3,5,8---构成了一个数列。这个数列有个十分明显的特点,那是:前面相邻两项之和,构成了后一项。

这个特点的证明:每月的大兔子数为上月的兔子数,每月的小兔子数为上月的大兔子数,即上上月的兔子数,相加。

这个数列是意大利中世纪数学家斐波那契在中提出的,这个级数的通项公式,除了具有a(n+2)=an+a(n+1)/的性质外,还可以证明通项公式为:an=1/√[(1+√5/2) n-(1-√5/2) n](n=1,2,3。..)

这个通项公式又叫 “比内公式”(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}

所以只要了解这个很容易就会知道了~!渐渐地就把有关于这种问题吸收到脑海里去了,一问就知道了,无须再做不必要的证明了~!

最后祝你学习愉快~!!!

2. python怎么算出全部斐波那契数列

import datetime

def fib1(n):

if n == 0:

return 0

elif n == 1:

return 1

else:

return fib1(n - 1) + fib1(n - 2)

known = {0: 0, 1: 1}

def fib2(n):

if n in known:

return known[n]

res = fib2(n - 1) + fib2(n - 2)

known[n] = res

return res

if __name__ == '__main__':

n = 40

print(datetime.datetime.now())

print('fib1(%d)=%d' % (n, fib1(n)))

print(datetime.datetime.now())

print('fib2(%d)=%d' % (n, fib2(n))