阿摩線上測驗 登入

申論題資訊

試卷:99年 - 099年身心障礙人員4等_資訊處理#33580
科目:程式設計
年份:99年
排序:0

申論題內容

二、請寫一個計算第 n 個費氏數(Fibonacci number)的遞迴程式(recursive function)。 註:Fib(0) = 0, Fib(1) = 1, ⋯, Fib(n) = Fib(n-1) + Fib(n-2)。(40 分)

詳解 (共 2 筆)

詳解 提供者:hchungw
計算費波那契數列的遞迴程式是一個經典的編程問題。根據定義,費波那契數列的第0項是0,第1項是1,而之後的每一項都是前兩項的和。下面是一個計算第n個費波那契數的遞迴函式:
python
Copy code
def fibonacci(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)
# 測試函式
n = 10  # 舉例計算第10項費波那契數
print(fibonacci(n))
這個函式首先檢查n是否小於或等於0,如果是,則返回0(根據定義,Fib(0) = 0)。如果n等於1,則返回1,因為Fib(1) = 1。對於所有其他情況,函式遞迴地調用自己兩次,一次計算Fib(n-1),一次計算Fib(n-2),並將這兩個值相加以產生Fib(n)。
雖然這個遞迴解法直觀且易於實現,但它在計算大數值時效率非常低。因為它會重複計算許多次相同的費波那契數。對於較大的n,使用動態規劃或將計算結果緩存起來的方法會更高效。
詳解 提供者:Triple w.
66f8e2de0031b.jpg
66f8e36db5e3b.jpg