遞迴
Recursion
需有
終止條件(基本條件)
遞迴條件(自我呼叫條件)
code:csharp
public int factorial (int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
Tail call
尾遞迴類似遞迴,但「回傳自身函式」必須為最後一個操作 例如上方範例,由於還有相乘,故非為尾遞迴
code:csharp
public int factorial(int n) {
return tailFactorial(1, n);
}
private int tailFactorial(int accumulator, int n) {
if (n <= 1) return accumulator;
return tailFactorial(accumulator * n, n - 1);
}