阶乘定义:
(1)一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积。
(2)0的阶乘为1。自然数n的阶乘写作 n! 。
(3)n! = 1×2×3×...×(n-1)×n 。
递归实现阶乘:
递归计算阶乘的公式为: 0! = 1 , n! = n × (n-1)!
由 n! = n × (n-1)! 可知,每一个数的阶乘就是数本身乘以比自己小1的数的阶乘。
例子:
5! = 5 * (4 !)
= 5 * 4 * (3 !)
= 5 * 4 * 3 * (2 !)
= 5 * 4 * 3 * 2 * (1 !)
= 5 * 4 * 3 * 2 * 1 * (0 !)
而 0! = 1;
将1带入即可算出5的阶乘。
代码
#include <stdio.h>
//阶乘函数 (也是深度优先搜索的一种)
int jie(int n){
if(n == 0) return 1; // 直到找到最后的数
return n * jie(n - 1) ; // 依次返回,不断调用自身函数
}
int main(){
int n,result;
scanf("%d",&n);
result = jie(n);//调用函数
printf("%d\n",result);
}