易百教程

函数递归

调用自身的函数称为递归。以下代码计算整数的阶乘。整数的阶乘是从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返回到上一个调用点。