用来练手的python 练习题其六,原链接 : python练习实例6
题干 : 斐波那契数列
斐波那契数列可以说是很好的递归理解工具了,这里就用递归实现一下斐波那契数列。
源代码如下:
# 返回fibonacci数列中某一项的数值
def Fibonacci(n):if n == 1:return 1elif n == 2:return 1else:return (Fibonacci(n-1) + Fibonacci(n-2))
# 输出斐波那契数列的第十项
print(Fibonacci(10))
输出 :
上述函数是返回斐波那契数列某一项的数值。使用递归的一个核心思想就是在函数中自调用,且每次自调用总是生成一个子问题。总的来说,递归的写法有很大程度上依赖数列的递推规律。对于斐波那契数列来说,总满足a1=1,a2=1,an=an−1+an−2forn>2a_1 = 1, a_2 = 1, a_{n} = a_{n-1} + a_{n-2} \space\space for\space n >2a1=1,a2=1,an=an−1+an−2 for n>2。利用递推规律,我们不难将当前项与之前的项联系起来,并在一步一步迭代中直至之前的项为初始值a1,a2a_1, a_2a1,a2。
有了上述函数,要输出斐波那契数列的前N项也很简单了,代码如下 :
import numpy as np
def Fibonacci_sequence(n):result = np.zeros(n)for i in range(n):result[i] = Fibonacci(i+1)return result
print(Fibonacci_sequence(10))
输出结果 :