【系統公告】頁面上方功能列及下方資訊全面更換新版,舊用戶可再切回舊版。 前往查看

教甄◆電腦科專業題庫下載題庫

上一題
有一程式片段如下: int count; void main() { int y; y = 0; count = 0; y = f(4, 7); y = y + count ; printf("%d.n", y ); } int f(int a, int b) { count = count + 1; if ( a == 0 && b == 0 ) return(0); if ( b == 0 ) return(f(a-1, b)+ 1); return ( f(a, b-1)+ b ); } 上述C語言程式片段,執行結果為何?
(A) 41
(B) 42
(C) 43
(D) 44


答案:登入後觀看
難度: 非常困難

10
 【站僕】摩檸Morning:有沒有達人來解釋一下?
倒數 18時 ,已有 1 則答案
鄭煌瀧 (2023/05/22):

遞迴題目:
a=4,b=7
f(a,b-1)+b會把7扣到0
b=0後,換f(a-1,b)+1把4扣到0
a=0後回傳0
f(a-1,b)+1
4扣到0共執行4次,所以是1*4
f(a,b-1)+b
從7一直加到0,所以是(1+7)*7/2=28
扣4次加扣7次共11次
所以最終答案0(回傳值)+1*4+28+11+1(一開始就count+1)=44

0個讚
檢舉


有一程式片段如下: int count; void main() { in..-阿摩線上測驗