c语言求阶乘的两种办法

本文最后更新于:2024年11月17日 晚上

循环法

循环法还是比较简单的,就先输入你要求的阶乘n,然后一直自减

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
main()
{
long n,sum=1;//10 以上的阶乘就比较大了
int i;
printf("请输入你要求的阶乘:");
scanf("%d",&n);//先输入要求的数
for(i=n;i>0;i--)//乘到1为止
{
sum*=i;
}
printf("%d != %d",n,sum);
return 0;
}

完成后的结果是这样子的
在这里插入图片描述

递归法

编程语言中,函数Func(Type a,……)直接或间接调用函数本身,则该函数称为递归函数。递归函数不能定义为内联函数。
就像我和你说:“从前有座山,山上有座庙,庙里有个小和尚,老和尚和小和尚说:从前有座山,山上有座庙,庙里有个小和尚,老和尚和小和尚说:巴拉巴拉的”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
int fun(int n)
{
if(n==1||n==0) return 1;//如果参数是0或者1返回1
return n*fun(n-1);//否则返回n和下次递归的积
}

int main()
{
int n;
scanf("%d",&n);
printf("%d\n",fun(n));
return 0;
}

完成的结果就是这样子的
在这里插入图片描述

使用递归要注意的就是关于结束的条件,不然程序会崩溃的


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!