文章目录
示例二:斐波拉契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
第一项为1
第二项为1
从第三项开始,每个数都是前两个数之和
本实验的思路是生成一个列表,让调用函数的时候输入的实参为数字的时候就生成列表中几个元素。
循环实现
def Fibonacci(x):
if x == 1:
sequence = [1]
return sequence
elif x == 2:
sequence = [1,1]
return sequence
elif x > 2:
sequence = [1,1]
for i in range(2,x):
sequence.append(sequence[i-1] + sequence[i-2])
return sequence
elif x <= 0:
return "input error,number must grather than 0"
print(Fibonacci(5))
print(Fibonacci(10))
print(Fibonacci(20))
print(Fibonacci(1))
print(Fibonacci(2))
print(Fibonacci(-1))
"""
[1, 1, 2, 3, 5]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]
[1]
[1, 1]
input error,number must grather than 0
"""
递归实现
使用递归返回相应下标的数列的值,使用循环求出每个下标的值后放入到列表中,我暂时还没找到更好的方法,后续发现后再行改善
def Fibonacci(x):
sequence = []
def subFibonacci(y):
if y == 1:
return 1
elif y == 2:
return 1
elif y > 2:
return subFibonacci(y-1)+subFibonacci(y-2)
for i in range(1,x+1):
sequence.append(subFibonacci(i))
return sequence
print(Fibonacci(5))
print(Fibonacci(10))
print(Fibonacci(20))
print(Fibonacci(1))
print(Fibonacci(2))
print(Fibonacci(-1))
"""
[1, 1, 2, 3, 5]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]
[1]
[1, 1]
[]
"""