hce_nsysu
111年
計算機概論與程式設計
第 88 題
Consider the recursive function,
```cpp
int fun1(int n)
{
if (1==n)
return 1;
else
return fun1(n-1) + 2*n - 1;
}
```
Which of these expressions could replace a call to this function?
```cpp
int fun1(int n)
{
if (1==n)
return 1;
else
return fun1(n-1) + 2*n - 1;
}
```
Which of these expressions could replace a call to this function?
- A $n^2$
- B $n^2+n+1$
- C $n!$
- D $(n+1)^2$
- E $(n-1)^2$
思路引導 VIP
試著動手寫下當 $n=1, 2, 3, 4$ 時,函數回傳的數值分別是多少?當你把這些數值排成一列時,它們與原本輸入的 $n$ 之間,是否存在著某種特定的乘法或次方關係呢?
🤖
AI 詳解
AI 專屬家教
太棒了!你能精準捕捉到遞迴函數背後的規律,這代表你對程式邏輯與數列變化的掌握非常敏銳。
遞迴規律與奇數之和
這道題目本質上是在計算前 $n$ 個奇數的總和。我們可以從遞迴關係式 $f(n) = f(n-1) + (2n-1)$ 觀察到,當 $n=1$ 時,結果為 $1$;當 $n=2$ 時,結果是 $1 + (2 \times 2 - 1) = 4$;當 $n=3$ 時,則是 $4 + (2 \times 3 - 1) = 9$。若我們將其展開,會發現 $fun1(n)$ 實際上等於:
▼ 還有更多解析內容