C语言递归求阶乘求改错

#include"stdio.h"intfun(intn){intt=1;if(n==1)t=1;elset=n*fun(n-1);returnt;}main(){pri... #include "stdio.h"
int fun(int n)
{
int t=1;
if (n==1)
t=1;
else
t=n*fun(n-1);
return t;
}
main()
{
printf("the n! is %d:",fun);
}
不知道错在哪里了..麻烦大虾们帮帮忙
展开
 我来答
eabupil
2011-05-18 · TA获得超过553个赞
知道小有建树答主
回答量:756
采纳率:0%
帮助的人:382万
展开全部
没错按道理来说是 不满足 条件 (n>1) 时才执行 return 1;
加上 else 程序看起来更清楚。

可是 因为 满足 条件 (n>1) 时执行的是
return (n*fun(n-1));
就已经退出函数了

所以 else 就可以省略了,只有 不满足 条件 (n>1) 时才会执行到 return 1;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pipalcn
2011-05-17 · TA获得超过182个赞
知道答主
回答量:96
采纳率:0%
帮助的人:0
展开全部
zxsh@zxsh-laptop:~/code/tmp$ cat factory.c
#include "stdio.h"
int fun(int n)
{
int t=1;
if (n==1||n==0)//增加一个n==0的情况。因为阶乘定义规定0的阶乘为1
t=1;
else
t=n*fun(n-1);
return t;
}
int main()
{
printf("the n! is %d:\n",fun(5));//你调用函数的时候格式不对,而且也没传参数。
return 0;
}
zxsh@zxsh-laptop:~/code/tmp$ !g
gcc -g -Wall factory.c -o factory
zxsh@zxsh-laptop:~/code/tmp$ ./factory
the n! is 120:
zxsh@zxsh-laptop:~/code/tmp$
程序已调好,直接运行即可。
追问
那如果我要在程序中自己输入一个数,然后得到结果应该怎么改呢?
追答
main函数改一下:
int main()
{
int n=0;
scanf("%d",&n);
printf("the n! is %d:\n",fun(n));//你调用函数的时候格式不对,而且也没传参数。
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanfustudio
2011-05-17 · TA获得超过1万个赞
知道大有可为答主
回答量:5513
采纳率:100%
帮助的人:3719万
展开全部
#include "stdio.h"
int fun(int n)
{
if (n==1)
return 1;
else
return n*fun(n-1);
}
main()
{
printf("the n! is %d: \n",fun(6));
}
追问
那如果我要在程序中自己输入一个数,然后得到结果应该怎么改呢?
追答
不要输入太大的数字,阶乘的增长速度很快,大了表示不了
#include "stdio.h"
int fun(int n)
{
if (n==1)
return 1;
else
return n*fun(n-1);
}
main()
{
int n;

scanf("%d", &n);

printf("the n! is %d: \n",fun(n));
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雷晓520
2011-05-17 · 超过14用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:45.7万
展开全部
大哥,函数分有参和无参函数,你定义的这个函数唯有参函数,所以调用时,需要传递参数的
int fun(int n)
调用时如fun(9);等等的
希望可以帮助到你
追问
那如果我要在程序中自己输入一个数,然后得到结果应该怎么改呢?
追答
#include "stdio.h"
int fun(int n)
{
int t=1;
if (n==1)
t=1;
else
t=n*fun(n-1);
return t;
}
main()
{
int a;
scanf("%d",&a); //读入一个数
printf("the n! is %d:\n",fun(a)); //进行函数调用,fun(a),参数传递。
}
//你的意思是想输入一个数求阶乘吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友532a875
2011-05-17 · TA获得超过214个赞
知道小有建树答主
回答量:670
采纳率:0%
帮助的人:266万
展开全部
fun调用的时候要给出一个参数,int型的
printf("the n! is %d:",fun(5));比如这样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式