針對下列 C 遞迴函式: int fn(int a, int b) { int c; if (b==0) return 1; else if (b%2==0) { c=fn(a, b/2); return c*c; } else return a*fn(a, b-1); } 若以下列方式呼叫,將產生何種輸出? printf("%d", fn(10, 5))
A2
B15
C50
D100000正確答案
答案與詳解
展開:fn(10,5)=10×fn(10,4);fn(10,4)=fn(10,2)²;fn(10,2)=fn(10,1)²;fn(10,1)=10×fn(10,0)=10。回推:fn(10,2)=100、fn(10,4)=10000、fn(10,5)=10×10000=100000,即 10^5。
