如题所述
1 求阶乘常见的有两种方法
(1)使用递归
(2)使用循环
2 代码如下
#include<stdio.h>//(1)使用递归
int method1(int n){
if (n == 1 || n == 0)
return 1;
else
return n*method1(n - 1);
}
//(2)使用循环
int method2(int n){
if (n == 0)
return 1;
int result = 1;
for (int i = 2; i <= n; i++){
result *= i;
}
return result;
}
int main(){
int n = 10; //n为非负整数
printf("方法(1): %d! = %d\n", n, method1(n));
printf("方法(2): %d! = %d\n", n, method2(n));
getchar();
return 0;
}
3 运行结果
温馨提示:答案为网友推荐,仅供参考
第1个回答 2009-05-19
#include<stdio.h>
void main()
{
long n=1;
for(int i=1;i<=10;i++)n*=i;
printf("1到10的阶乘为%ld\n",n);
}
或者用函数这样
#include <stdio.h>
int fun(int n);
void main()
{
int n,sum=0;
printf("请输入n:");//输入数字,如10,不过不能太大,会溢出的
scanf("%d",&n);
printf("1到10的阶乘为: %ld\n",fun(n));
}
int fun(int n)//计算阶乘
{
if(n==1)
return 1;
return n*fun(n-1);
}
void main()
{
long n=1;
for(int i=1;i<=10;i++)n*=i;
printf("1到10的阶乘为%ld\n",n);
}
或者用函数这样
#include <stdio.h>
int fun(int n);
void main()
{
int n,sum=0;
printf("请输入n:");//输入数字,如10,不过不能太大,会溢出的
scanf("%d",&n);
printf("1到10的阶乘为: %ld\n",fun(n));
}
int fun(int n)//计算阶乘
{
if(n==1)
return 1;
return n*fun(n-1);
}
第2个回答 2009-05-19
#include<stdio.h>
main()
{
int a=1;
while(a<=10)
a=a*(a+1);
printf("10!=%d",a);
}
main()
{
int a=1;
while(a<=10)
a=a*(a+1);
printf("10!=%d",a);
}
第3个回答 推荐于2016-09-28
#include <stdio.h>
main ()
{
unsigned long long int sum=1;
char i;
for (i=1;i<=10;i++)
sum*=i;
printf ("%ld",sum);
return 0;
}本回答被提问者采纳
main ()
{
unsigned long long int sum=1;
char i;
for (i=1;i<=10;i++)
sum*=i;
printf ("%ld",sum);
return 0;
}本回答被提问者采纳