调用自身的函数称为递归。以下代码计算整数的阶乘。整数的阶乘是从1
到整数本身的所有整数的乘积。
示例代码
#include <stdio.h>
unsigned long long factorial(unsigned long long);
int main(void)
{
unsigned long long number = 10LL;
printf("The factorial of %llu is %llu\n", number, factorial(number));
return 0;
}
// 递归因子函数
unsigned long long factorial(unsigned long long n)
{
if (n < 2LL)
return n;
return n * factorial(n - 1LL);
}
执行上面示例代码,得到以下结果:
The factorial of 10 is 3628800
在main()
函数调用factorial()
函数,参数为10
。在factorial()
函数本身中,执行以下语句:
return n*factorial(n - 1LL);
它使用参数值9
再次调用factorial()
。在使用参数9
从函数factorial()
调用返回值之前,无法计算此表达式。它将继续执行,直到factorial()
函数的最后一次调用的参数值为1
。
在这种情况下,执行第一个return
语句: 这会将值1
返回到上一个调用点。