1、使宏郑穗用递归算法
#include <stdio.h>#include <process.h>
long factorial(int n)
{
long result
if (n<0)
{
printf("n<0,请输入大于等于0的整数!")
return -1
}
else if (n == 0 || n == 1)
{
result = 1
}
else
{
result = n*factorial(n 蔽卜- 1)
}
return result
}
main()
{
int n = 10.0
long iNum
iNum = factorial(n)
printf("10!=%ld\n", iNum)
system("pause")
}
2、使用循环
#include<stdio.h>#include<process.h>
int main()
{
int i = 1 //累加变量
long j = 1 //储存结果
int k = 1 //输入的数值
printf("请输入一个数字:")
scanf("%d", &k)
do
{
j = j*i
i++
} while (i <= k)
printf("%ld\n", j)
system("pause")
return 1
}
以上两种方式是求阶乘的普通算法,求得的结果表示范围都是有限的,如丛高果算大数的阶乘还要另外的算法。
程序如下:
#include "stdio.h"
int main(void)
{
int i
int acc=1//用于存放阶乘
printf ("请输入一悉纳个整数i=")
scanf ("%d",&i)
for(i>0i--)
{
acc*=i
}
printf("该数的阶乘为隐拿acc=%d\n",acc)
return 0
}
运用for循环来求阶乘。
运睁携没行结果:
如求十的阶乘
10! = 3628800如果用int明显越界。。。枝乎
usigned int 范围洞困是0~65535 明显也不够
需要使用long
下面是程序
#include<猛颤悉stdio.h>
#include<conio.h>
int main()
{
long result = 1
int i
for (i = 1i <= 10i++)
{
result *= i
printf("%ld\n", result)
}
getch()
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)