递归和非递归分别实现求n的阶乘

时间:2022-01-10 08:53:29

思路:举例求6的阶乘,6*5*4*3*2*1。可以将5开始看成另一个整型变量n,用一个循环每次将n的值减少1,。而递归也是如此,每次调用函数的时候将变量减一就可以。

方法一:非递归

 //非递归:
#include<stdio.h>
int main()
{
int num = ;
printf("请输入数字:\n");
scanf("%d",&num);
int n = num - ;
while (n > )
{
num = num * n;
--n;
}
printf("%d",num);
return ;
}

方法二:递归法

 //递归:
#include<stdio.h> int Find_num(int num)
{
if (num == )
{
return ;
}
else if (num == )
{
return ;
}
else
{
return num * Find_num(num - );
}
} int main()
{
int num = ;
printf("请输入数字:\n");
scanf("%d",&num);
int find_num = Find_num(num);
printf("%d",find_num);
return ;
}