函式 · 複習測驗

10 題涵蓋 定義/呼叫、傳值、原型、遞迴、call stack · 達 90% 放行
尚未作答
作答後按交卷自動算正確率:≥ 90% 過關;未達則回 Quizlet / 講義 複習再測。每題交卷後顯示正解與解析。

Q1參數(parameter)與引數(argument)的差別?概念

定義時是參數、呼叫時傳的是引數。int add(int a,int b) 的 a、b 是參數;add(3,4) 的 3、4 是引數,會被複製給參數。

Q2int add(int a,int b){return a+b;}add(3,4) 回傳?預測輸出

7。a 收到 3、b 收到 4,return a+b 交回 7。

Q3void 函式可以做什麼?概念

void=做事但不回傳值。可寫 return; 提前結束,或不寫;不可 return 一個值

Q4void inc(int v){v=v+1;},對 int x=5; 呼叫 inc(x) 後,x 是?預測輸出

5。傳值:v 是 x 的複本,v=v+1 只改複本,main 的 x 不變。

Q5要讓函式真的改到呼叫端的變數,正確做法是?概念

傳位址。函式收 int *v、用 *v += 1 透過位址改原變數,呼叫時 inc(&x)。細節在「指標與記憶體」章。

Q6函式原型(prototype)的作用與寫法?概念

原型是宣告,要分號。int add(int a,int b); 放前面,編譯器才認得放在 main 後面的定義。

Q7遞迴的兩個必備要素是?概念

基底條件+遞迴步驟。基底決定何時停,步驟讓每次問題更靠近基底。

Q8int fact(int n){ return n*fact(n-1); } 會怎樣?抓 bug

無窮遞迴、Stack Overflow。沒有 if(n<=1)return 1;,永遠呼叫自己、call stack 被撐爆。

Q9int sum(int n){if(n<=0)return 0;return n+sum(n-1);}sum(5)=?預測輸出

15。5+4+3+2+1+0=15(即 1+2+…+5)。

Q10int fib(int n){if(n<=2)return 1;return fib(n-1)+fib(n-2);}fib(6)=?(序列 1,1,2,3,5,8)預測輸出

8。fib(6)=fib(5)+fib(4)=5+3=8。