考虑一个数的阶乘,通常写为5!=5*4*3*2*1。
解决问题的最好使用一个称为递归的过程来实现。
这个计算也可以认为是重复计算num*(num-1),直到num为1。
递归函数是调用自身并包含结束递归调用的基本情况或退出条件的函数。在计算阶乘的情况下,基本情况是num等于1。
例如:
#include <stdio.h> // 函数声明 int factorial(int num); int main() { int x = 5; printf(" %d 的阶乘是 %d\n", x, factorial(x)); return 0; } // 定义函数 int factorial(int num) { if (num == 1) /* 结束状态*/ return (1); else return (num * factorial(num - 1)); }
程序输出是:5的阶乘是120
2*factorial(1) 3*factorial(2) 4*factorial(3) 5*factorial(4)
当达到基本情况时,返回值1触发 调用的完成。最终计算(5*24)返回到调用函数main():
递归解决方案需要一个结束状态来防止无限循环。