阿摩線上測驗 登入

申論題資訊

試卷:99年 - 99 鐵路特種考試_高員三級_資訊處理:程式語言#27555
科目:程式語言
年份:99年
排序:0

題組內容

一、試以 C(或以 C 為基礎)之程式語言撰寫一函式(function),以計算一自然數 n 之 斐波那契(Fibonacci)值 F(n)。
提示:Fibonacci function:F(0) = F(1) = 0;當 n > 1 時 F(n) = F(n-1) + F(n-2)

申論題內容

⑴使用遞迴(recursion)方式撰寫。(10 分)

詳解 (共 2 筆)

詳解 提供者:加加油
int F(int n){ if(n==0 || n==1)   return n;  return F(n-1)+F(n-2); }
詳解 提供者:hchungw
使用遞迴(recursion)方式撰寫計算斐波那契數列值的函式。在這個例子中,我們將使用 C 語言來實現這個功能。根據提示,斐波那契數列的定義如下:
F(0) = 0
F(1) = 0
當 n > 1 時,F(n) = F(n-1) + F(n-2)
使用遞迴方式撰寫斐波那契函式
c
複製程式碼
#include <stdio.h>
// 定義遞迴函式來計算斐波那契數列值
int fibonacci(int n) {
    if (n == 0) {
        return 0;
    } else if (n == 1) {
        return 0;
    } else if (n == 2) {
        return 1;
    } else {
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
}
int main() {
    int n;
    // 輸入要計算的斐波那契數列的索引
    printf("輸入一個非負整數 n:");
    scanf("%d", &n);
    // 計算並打印斐波那契數列值
    printf("F(%d) = %d\n", n, fibonacci(n));
    return 0;
}
說明
遞迴函式 fibonacci:
當 n 為 0 或 1 時,返回 0。
當 n 為 2 時,返回 1。
當 n 大於 2 時,返回 fibonacci(n-1) + fibonacci(n-2) 的值。
主函式 main:
要求用戶輸入一個非負整數 n。
調用 fibonacci 函式計算並打印斐波那契數列值。
執行範例
plaintext
複製程式碼
輸入一個非負整數 n:5
F(5) = 3
在這個範例中,當用戶輸入 5 時,程式會計算並打印斐波那契數列的第 5 項值,結果為 3。
注意事項
遞迴方式簡單直觀,但對於較大的 n 值,遞迴深度會非常大,計算效率不高。這是因為遞迴函式會重複計算許多中間值。可以考慮使用動態規劃或其他優化技術來提高效率。
如果需要處理更大的數值,應考慮優化算法,或者使用迭代方法來避免遞迴過深導致的效能問題。