函式

可跑範例 · JSCPPJSCPP 載入中…
先預測再按試跑。重點:呼叫把引數複製給參數(傳值);遞迴要有基底條件+讓問題變小的步驟。
experiment 01

呼叫與回傳

add 收到引數的複本、算完用 return 交回。

預測:7 / 30
experiment 02

傳值:改不到呼叫端

inc 改的是 x 的複本,main 的 x 不變。

預測:5(不是 6)
想讓它變 6?把參數改 int *v、函式內 *v += 1、呼叫 inc(&x)(指標章)。
experiment 03

遞迴:階乘

基底 n <= 1 回 1;否則 n * fact(n-1)

預測:120
experiment 04

遞迴:倒數發射(看流程)

每層先印 n,再呼叫 countdown(n-1),碰到基底才停。

預測:4 3 2 1 liftoff(各一行)
把基底條件那行刪掉,本機跑會無窮遞迴 Stack Overflow(這裡別試)。
experiment 05

費氏數列

fib(n)=fib(n-1)+fib(n-2),前兩項是 1。序列 1,1,2,3,5,8,13。

預測:13
純遞迴會重複算同一個 fib,n 大時很慢;之後用迴圈或記憶化改善。