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++编译器并不保证对所有尾递归都会进行优化。因此,在编写递归函数时,最好还是使用直接递归,并确保有一个明确的基本情况来终止递归。