C++中遞歸函數的定義主要有兩種方式:
int factorial(int n) {
if (n == 0) { // 基本情況
return 1;
} else {
return n * factorial(n - 1); // 遞歸調用
}
}
int factorial_tail(int n, int accumulator = 1) {
if (n == 0) { // 基本情況
return accumulator;
} else {
return factorial_tail(n - 1, n * accumulator); // 尾遞歸調用
}
}
請注意,雖然尾遞歸在某些情況下可以被優化,但C++編譯器并不保證對所有尾遞歸都會進行優化。因此,在編寫遞歸函數時,最好還是使用直接遞歸,并確保有一個明確的基本情況來終止遞歸。