iT邦幫忙

0

Day 10:遞迴函數,嘗試寫一個計算階乘的程式

c#
  • 分享至 

  • xImage
  •  

什麼是遞迴?
遞迴 (Recursion) 就是一個函數自己呼叫自己。
它通常用來解決「可以拆成更小同類問題」的情況,例如:數學計算、走迷宮、樹狀結構...

遞迴的基本結構

  1. 終止條件 (Base Case)
  • 避免無限呼叫自己
  • 必須有「停止的出口」
  1. 遞迴步驟 (Recursive Step)
    問題被拆解成「更小的自己」

以階乘 (Factorial) 為例
數學定義:
n! = n × (n-1) × (n-2) × … × 1

規則:
0! = 1
5! = 5 × 4 × 3 × 2 × 1 = 120
https://ithelp.ithome.com.tw/upload/images/20250925/20178925h0LOJunfHc.png

遞迴的關鍵:
要有 終止條件,不然會造成「無限遞迴」而導致程式當掉
每次呼叫都讓問題更接近終止條件

補充遞迴 vs 迴圈:

特點 遞迴 (Recursion) 迴圈 (Loop)
定義 函數自己呼叫自己,直到符合終止條件 使用 for / while / do-while 讓程式重複執行
需要條件 必須有「終止條件」避免無限呼叫 必須有「迴圈條件」避免無限迴圈
適合情境 問題可以自然拆分成「更小的自己」,如數學公式、樹狀結構、搜尋 重複固定次數或條件判斷,如跑清單、九九乘法表
可讀性 結構簡潔、貼近數學定義 邏輯清楚、執行效率通常較高
效能 呼叫函數會使用堆疊記憶體 (Stack),效率可能較低 記憶體需求較小,通常執行效率較高
風險 遞迴太深可能造成「Stack Overflow」錯誤 迴圈若條件寫錯,會造成「無限迴圈」

圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
李大瑋
iT邦好手 1 級 ‧ 2025-09-25 14:39:43

兄弟
你應該是放錯地方了

413570622 iT邦新手 5 級 ‧ 2025-09-25 19:37:54 檢舉

感謝!已經改了

我要留言

立即登入留言