要用上函数的递归调用
本人积分不多 只好全部奉上来表达对回答者的感谢
谢谢大家了!!!
下面两位的回答都很好 但是题目还要求用上函数的递归调用
用C语言编一程序求10的阶乘
答案:5 悬赏:50 手机版
解决时间 2021-01-04 21:59
- 提问者网友:雨不眠的下
- 2021-01-03 23:55
最佳答案
- 五星知识达人网友:一袍清酒付
- 2021-01-10 00:26
#include<stdio.h>
int fac(int n); //函数声明
void main()
{
int a;
//int m;
printf("input a int number:");
scanf("%d",&a);
printf("after the function is:");
//m=f(a);
printf("%d\n",fac(a));
}
int fac(int n) //定义fac函数
{
if(n<0)
{
printf("n<0,date error!");
}
else
if(n==0||n==1)
{
return 1;
}
else
return (n*fac(n-1));
}
注意输入的数不能太大了,否则就会出现溢出的情形。
比方说10000的阶乘就要用数组来实现了,这个程序是无法办到的。
int fac(int n); //函数声明
void main()
{
int a;
//int m;
printf("input a int number:");
scanf("%d",&a);
printf("after the function is:");
//m=f(a);
printf("%d\n",fac(a));
}
int fac(int n) //定义fac函数
{
if(n<0)
{
printf("n<0,date error!");
}
else
if(n==0||n==1)
{
return 1;
}
else
return (n*fac(n-1));
}
注意输入的数不能太大了,否则就会出现溢出的情形。
比方说10000的阶乘就要用数组来实现了,这个程序是无法办到的。
全部回答
- 1楼网友:山有枢
- 2021-01-10 02:42
#include <stdio.h>
int a(int n)
{
if(n==1)
{
return 1;
}
else
{
return n*a(n-1);
}
}
main()
{
int rtn;
rtn = a(10);
printf("%d\n",rtn);
}
- 2楼网友:舍身薄凉客
- 2021-01-10 02:32
#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;
}
这里有个符合你要求的例子
http://www.bc-cn.net/Article/kfyy/cyy/jc/200511/916.html
- 3楼网友:忘川信使
- 2021-01-10 01:42
#include <stdio.h>
#include <stdlib.h>
int a(int n);
int main()
{
int z;
printf("请输入一个不大于10的整数\n");
scanf("%d",&z);
printf("%d!=%d",z,a(z));
system("pause");
}
int a(int n)
{
if(n==1)
{
return 1;
}
else
{
return n*a(n-1);
}
}
- 4楼网友:污到你湿
- 2021-01-10 01:05
递归函数求 10 的阶乘
#include <stdio.h>
long int fun(int n) //递归函数
{
if (n==1||n==0)
return 1;
else
return (n*fun(n-1));
}
void main()
{
int n;
printf("输入要求阶乘的数\n");//输入10就行了。不能输入太大的数,道理你应该知道呵呵!
scanf("%d",&n);
printf("%d的阶乘是%ld\n",n,fun(n));//调用函数
}
如果你只求10的阶乘 可以直接给n 赋值为10 不用输入
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯