Python中斐波那契数列的赋值逻辑

斐波那契数列

  斐波那契数列又称费氏数列,是数学家Leonardoda Fibonacci发现的。指的是0、1、1、2、3、5、8、13、21、34、······这样的数列。即从0和1开始,第n项等于第n-1项与n-2项之和。需要注意的是0是第0项,而不是第一项。

用Python中简单的赋值语句实现斐波那契数列的赋值逻辑

  斐波那契数列的规律其实就是将前两项的值相加并得到当前项的值,用for循环和while循环都能实现这个逻辑,如下图:

 

赋值原理:

  n代表斐波那契数列(以下简称数列)中的当前项的值,这个值要存储起来在下一个循环中与当前循环中的上一项相加,也就是下一个循环中的前二项,由于斐波那契数列是从0和1开始的,所以在循环开始时要初始化a和b的值,将a作为第0项,b作为第一项。在第一次循环中n=a+b=1,这样n中就储存了第二项的值,然后将这个值赋值给b,使b中存储第二项的数列值,也就是当前项的数列值。另外,更重要的一点是,在n赋值给b之前,b一定要将其在当前循环中的值先赋值给a,然后a的值就是下次循环中的第前二项的值。在某次循环中,n始终代表的是数列中当前项的值,b的最终值也是当前项的值,但会留在下一次循环中作为下一次循环的前一项的值使用,而a在本次循环中的最终值则是当前循环中b的初始值,也就是上一次循环的n的值,即当前循环的上一个数列值,下一循环的前二项的值。依次类推,周而复始的计算出斐波那契数列。

  简单的实现:

#打印出100以内的斐波那契数列
#while语句:
#
a=int(0)
b=int(1)
n=int(0)
while n<=100:
    n=a+b
    a=b
    b=n
    if n<100:
        print(n)
#
#求斐波那契数列的第101项
a=int(0)
b=int(1)
s=int(0)
while s<=100:
    n=a+b
    a=b
    b=n
    s=s+1
print(n)

 如果用list来实现就很简单了:

lst = [0,1]
for i in range(100):
    lst.append(lst[i]+lst[i+1])
print(lst[101])

 

posted @ 2018-12-21 12:35  readygood  阅读(832)  评论(0编辑  收藏  举报