在C++中,递归函数通常需要一个基本情况(base case)来终止递归,以及一个递归情况(recursive case)来逐步逼近基本情况。为了实现递归,你需要将问题分解为更小的子问题,并将这些子问题作为参数传递给递归函数。
以下是一个简单的递归函数示例,用于计算阶乘:
#include <iostream>
// 递归函数,计算阶乘
unsigned long long factorial(unsigned int n) {
// 基本情况:0的阶乘为1
if (n == 0) {
return 1;
}
// 递归情况:n的阶乘等于n乘以(n-1)的阶乘
else {
return n * factorial(n - 1);
}
}
int main() {
unsigned int n = 5;
std::cout << "Factorial of "<< n << " is: " << factorial(n) << std::endl;
return 0;
}
在这个例子中,factorial
函数接受一个unsigned int
类型的参数n
。基本情况是当n
为0时,返回1。递归情况是计算n * factorial(n - 1)
,即将问题分解为更小的子问题(计算(n-1)
的阶乘),并将子问题作为参数传递给递归函数。