recursion: fibonacci array

Fibonacci array (斐波那契数列)的编程实现

golden section/ratio 黄金分割/比 : 0.618

$A_n = A_{n-1} + A_{n-2} $

$limlimits_{nto infty} frac{A_{n-1}}{A_n}=frac{sqrt{5}-1}{2} $

$ begin{eqnarray}F(n)= begin{cases} 1, &n=1 cr 1, &n=2 cr F(n-1)+F(n-2), &n>2 end{cases}end{eqnarray} $
利用迭代和递归两种算法来求出n = 20 时,F(n)=?

Iteration :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def Fibonacci(n):
n1 = 1
n2 = 1
n3 = 1

if n < 1:
print('输入有误!')
return -1

while n > 2:
n3 = n2 + n1
n1 = n2
n2 = n3
n -= 1

return n3

number = int(input('Please input an interger:'))
result = Fibonacci(number)
print("n=%d时斐波那契数列值为:%d" % (number, result))

Recursion(divide and conquer algorithm) :

1
2
3
4
5
6
7
8
9
10
11
12
def Fibonacci(n):
if n < 1:
print('输入有误!')
return -1
elif n == 1 or n==2:
return 1
else:
return Fibonacci(n-1) + Fibonacci(n-2)

number = int(input('Please input an interger:'))
result = Fibonacci(number)
print("n=%d时斐波那契数列值为:%d" % (number, result))