書中說遞迴法比迴圈法更慢,實測速度差不多一樣,不知道怎麼回事。
很簡單,直接上**吧:
# coding:utf-8
# 遞迴計算斐波那契數列
def fibonaccirecursion(n):
if n < 0:
return false
elif n == 0:
return 0
else:
fibonaccin = fibonacci(n-1) +fibonacci(n-2)
return fibonaccin
# 迴圈計算斐波那契數列(相比遞迴更加高效)
def fibonacci(n):
num1 = 0; num2 = 1
if n < 0:
return false
elif n == 0:
return 0
elif n == 1:
return 0
else:
i = 2
while i <= n:
numi = num1 + num2
num1 = num2
num2 = numi
i += 1
return numi
n = int(raw_input('請輸入第幾個斐波那契數:'))
print fibonaccirecursion(n-1)
print fibonacci(n-1)
面試題9 斐波那契數列
方法一 很容易想到的解法是直接使用遞迴。c include stdafx.h include using namespace std long long fibonacci unsigned int n if n 1 return fibonacci n 1 fibonacci n 2 int tm...
面試題9 斐波那契數列
題目一 寫乙個函式,輸入n,求斐波那契數列的第n項,斐波那契數列的定義如下 0 n 0 f n 1 n 1 f n 1 f n 2 n 1 遞迴 long long fibonacci unsigned int n if n 0 n 1 return n return fibonacci n 1 f...
面試題9 斐波那契數列
面試題9 題目 寫乙個函式,輸入n,求斐波那契數列的第n項。很多教科書中的解法 long long fibonacci solution1 unsigned int n 這是從第n項向前計算的方法,很多計算量實際上是重複的。long long fibonacci solution2 unsigned...