在本文中,您将学习创建递归函数。调用自身的函数。
调用自身的函数称为递归函数。并且,这种技术称为递归。
void recurse() { ... .. ... recurse(); ... .. ... } int main() { ... .. ... recurse(); ... .. ... }
下图显示了递归调用的方式。
递归一直持续到满足某些条件为止。
为了防止无限递归,可以在一个分支进行递归调用而另一个不进行递归调用的情况下使用if ... else语句(或类似方法)。
// n的阶乘 = 1*2*3*...*n #include <iostream> using namespace std; int factorial(int); int main() { int n; cout<<"输入一个数字来查找阶乘: "; cin >> n; cout << "数字 " << n <<" 的阶乘= " << factorial(n); return 0; } int factorial(int n) { if (n > 1) { return n*factorial(n-1); } else { return 1; } }
输出结果
输入一个数字来查找阶乘: 4 数字 4的阶乘= 24
假设用户输入了4,并将其传递给该factorial()函数。
在第一个factorial()函数中,测试if语句为true 内的表达式。return num*factorial(num-1);语句被执行,它调用第二个factorial()函数,传递的参数num-1为3。
在第二个factorial()函数中,测试if语句为true内的表达式。return num*factorial(num-1);语句被执行,它调用第三个factorial()函数,传递的参数为num-1为2。
在第三个factorial()函数中,测试if语句为true内的表达式。return num*factorial(num-1);语句被执行,它调用第四个factorial()函数,并且传递的参数是num-1是1。
在第四个factorial()函数中,测试if语句为false内的表达式。return 1;语句被执行,返回1至第三个factorial()函数。
第三个factorial()函数将2返回到第二个factorial()函数。
第二个factorial()函数将6返回到第一个factorial()函数。
最后,第一个factorial()函数将24返回到main()函数,该函数将显示在屏幕上。