递归函数,就是指自己调用自己的函数。
运用大事化小的思维,将繁杂的流程简单化
想对比于循环思维,递归函数显然让代码的利用率更高了,因为0的阶乘是0,所以这应该单独进行判断,也就是得到结果为1,之后就是让它本身与比它小的数相乘了。
其实这个逻辑很好理解,给定数5,然后5去与factorial(4)相乘,同时factorial(4)又是4与factorial(3)相乘,与此推理下去,直到最小是与1相乘即可,那就满足了从1开始到它本身的所有数相乘。
#include<stdio.h>//递归求n的阶乘
int factorial(long n)
{
if (n <= 1)//0,1的阶乘为1
{
return 1;
}
else
{
long m = n * factorial(n - 1);//递归
return m;
}
}
int main()
{
int n=0;
long ret = 0;
printf("请输入一个数:>");
scanf_s("%d",&n);
ret = factorial(n);
printf("此数的阶乘为:%d\n",ret);
return 0;
}