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