大一C语言课本上的这个程序不能在TC2.0上运行?

以下是课本上有关函数的递归调用的一道程序,是求n!的。运行该程序,TC没有一点反应,显示错误为LinkerError:undefinedsymbol'_nfun'inmo... 以下是课本上有关函数的递归调用的一道程序,是求n!的。运行该程序,TC没有一点反应,显示错误为Linker Error:undefined symbol'_nfun' in module xxx;
然后我对这个程序还有一点疑问递归调用n-1如果递归到n=2 n-1=1 这时不是满足条件n==0 把s赋值为1了,以前的计算不就无效了吗?我的分不多,但仍希望希望各位高手能耐心解答,小弟感激不尽!
#include<stdio.h>
long fun(int n)
{
long s;
if(n<0) {printf("illegal number!\n");s=-1;}
else if(n==0) s=1;
else s=n*fun(n-1);
return s;
}
void main()
{
long fun(int);
int n;
printf("please enter the number(n)(>=0)");
scanf("%d",&n);
printf("%d!=%ld\n",nfun(n));

}
展开
 我来答
389521351
2011-01-17
知道答主
回答量:11
采纳率:0%
帮助的人:4.6万
展开全部
printf("%d!=%ld\n",nfun(n));这一行输错了吧,那个“nfun"报错,是因为你少输了一个逗号吧,正确的应该是“n,un(n)。注意是英文状态下的逗号。
我不知道你用的是哪个学校的教材。我那时学C语言的时候用的是清华大学谭浩强的教材,柑橘不错。如果你用的不是的哈,感兴趣的话可以参阅一下啊。
加油~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
haizzz9314
2011-01-17
知道答主
回答量:14
采纳率:0%
帮助的人:0
展开全部
先解决你的这个问题“如果递归到n=2 n-1=1 这时不是满足条件n==0 把s赋值为1了,以前的计算不就无效了吗?”,这里的s=1,执行到这里的s是个局部变量不会覆盖以前s的值。
“ printf("%d!=%ld\n",nfun(n));”大侠你自己看看你的函数调用,函数名你自己写的是什么?汗
以后编程时一定要仔细哟^_^
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuyuexiaodai
2011-01-17 · TA获得超过281个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:93.4万
展开全部
最后一句改为printf(%d!=%ld\n",n,fun(n));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式