阿摩線上測驗 登入

申論題資訊

試卷:98年 - 98 身心障礙特種考試_三等_資訊處理:程式語言#34576
科目:程式語言
年份:98年
排序:0

申論題內容

四、以下之程式段為簡單之遞迴函式(recursive function),假設 a 與 b 皆為正整數,試
問該程式段在執行什麼工作?(20 分)
int function(int a, int b);
{
if(b==1){
return a;
}
else {
return a + function(a,b-1);
}

}

詳解 (共 1 筆)

詳解 提供者:hchungw
該程式段是實現了一個簡單的遞迴函數,其功能是計算將整數 a 加上自己 b 次的結果。這相當於計算 a 乘以 b。以下是程式段的具體分析:
程式段
c
複製程式碼
int function(int a, int b) {
    if (b == 1) {
        return a;
    } else {
        return a + function(a, b - 1);
    }
}
程式段分析
基礎情況(Base Case):
當 b == 1 時,函數返回 a。這是遞迴的結束條件。
遞迴情況(Recursive Case):
當 b 不等於 1 時,函數返回 a + function(a, b - 1)。這表示 a 加上函數 function(a, b - 1) 的結果。
遞迴過程
假設 a = 3,b = 4,遞迴過程如下:
function(3, 4) 會計算 3 + function(3, 3)
function(3, 3) 會計算 3 + function(3, 2)
function(3, 2) 會計算 3 + function(3, 1)
function(3, 1) 會返回 3
將這些結果相加:
function(3, 2) = 3 + 3 = 6
function(3, 3) = 3 + 6 = 9
function(3, 4) = 3 + 9 = 12
結論
該遞迴函數的功能實際上是計算 a * b。它通過不斷地將 a 相加 b 次來實現這一點。也就是說,function(a, b) 計算的結果與 a * b 是相同的。
程式功能
該程式段執行的是乘法運算,但通過遞迴的方式實現,即將 a 自己相加 b 次,來達到 a * b 的效果。
這種實現方式展示了遞迴的一個基本應用,同時也提供了一種不同於迴圈的思路來實現乘法運算。