阿摩線上測驗 登入

申論題資訊

試卷:113年 - 113 司法特種考試_三等_檢察事務官電子資訊組:程式語言#122108
科目:程式語言
年份:113年
排序:0

題組內容

二、遞迴函式(Recursion)是程式語言常用的解題技巧之一,請回答下列問題:

申論題內容

(二)請用迴圈(Iteration)以及遞迴分別撰寫計算第 n 個費式數列的值。費氏數列由 0 和 1 開始,之後費氏數列的值就是由之前的兩數相加而得出。程式語言可使用 C/C++、Python 或是 Java 撰寫。 (10 分)

詳解 (共 1 筆)

詳解 提供者:hchungw
PYTHON:
 
# 使用迴圈計算第 n 個費氏數列的值
def fibonacci_iterative(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    a, b = 0, 1
    for _ in range(2, n + 1):
        a, b = b, a + b
    return b
# 測試迴圈版本
n = 10
print(f"Fibonacci Iterative (n={n}):", fibonacci_iterative(n))

# 使用遞迴計算第 n 個費氏數列的值
def fibonacci_recursive(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)
# 測試遞迴版本
print(f"Fibonacci Recursive (n={n}):", fibonacci_recursive(n))
 
C++
 
// 使用迴圈計算第 n 個費氏數列的值(C++ 版本)
#include <iostream>
using namespace std;
int fibonacci_iterative(int n) {
    if (n <= 0) {
        return 0;
    } else if (n == 1) {
        return 1;
    }
    int a = 0, b = 1;
    for (int i = 2; i <= n; ++i) {
        int temp = b;
        b = a + b;
        a = temp;
    }
    return b;
}
// 使用遞迴計算第 n 個費氏數列的值(C++ 版本)
int fibonacci_recursive(int n) {
    if (n <= 0) {
        return 0;
    } else if (n == 1) {
        return 1;
    } else {
        return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2);
    }
}
int main() {
    int n = 10;
    cout << "Fibonacci Iterative (n=" << n << "): " << fibonacci_iterative(n) << endl;
    cout << "Fibonacci Recursive (n=" << n << "): " << fibonacci_recursive(n) << endl;
    return 0;
}