此為個人學習筆記,如果有理解錯誤或是相關資訊歡迎留言告知與分享,謝謝!
參考影片: 小山的 C# 教學
什麼是遞迴?
它是一個方法,一直不斷的呼叫自己,直到某些條件被滿足因而停止。
遞迴?迴圈?
遞迴優點
- 可以處理較複雜的問題
- 程式碼比較簡潔且可讀性高
遞迴缺點
- 執行效率較差
- 有可能導致堆疊溢位(stack overflow)(下面會解釋)
遞迴的運作原理?
遞迴產生的變數值會先暫存在Stack(之前曾經有稍微提到Stack -> C# Value & Reference Type)
等用到時將它取回(取回後便不會占用stack記憶體空間嗎??)
所以如果存入極多的值或是終止條件沒寫好而產生無窮迴圈的時候,便會導致stack overflow
當一個方法呼叫另一個方法時,會先執行完被呼叫的方法,再回來繼續執行自己的方法
這是Stack的特性????先進後出(存入順序: A, B, C,取出順序: C, B, A)
e.g.,
題目:1 + 3 + 5 + .... + 13 = ?
public static int RecSum(int num)
{
if (num < 1)
{
return 0;
}
else
{
return num + RecSum(num - 2);
}
}
RecSum(13)
執行結果
49
可以試試看用迴圈寫出~