标题:请问程序在哪有错?为什么?
只看楼主
guozhencai
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-3-9
 问题点数:0 回复次数:9 
请问程序在哪有错?为什么?
#include "Stdio.h" #include "Conio.h" main() { int i; long int s; long int sb(int); for(i=20;i>0;i--) s=s+sb(i); printf("%ld",s); getch(); } long int sb(int x) {long int s; if (x==1) s==1; s=x*sb(x-1); return (s); } 题目: 求1+2!+3!+...+20!的和 请问程序在哪有错?为什么? 谢谢!
搜索更多相关主题的帖子: include return 
2005-04-15 18:23
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 
1,手工计算1!+2!+。。。+ 20!有多少大

2。再看看你的long int能否容纳下

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-04-15 21:16
musicml
Rank: 1
等 级:新手上路
帖 子:273
专家分:0
注 册:2005-4-2
得分:0 
long int s
这样定义变量是什么意思啊?

Every thing is possible.
2005-04-15 21:36
mingyue
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2004-5-13
得分:0 
#include "Stdio.h"
#include "Conio.h"
main()
{
int i;
long int s=0;     //初始化s
long int sb(int);
for(i=12;i>0;i--)  //long型的s最多只能存加到12!的结果
s=s+sb(i);
printf("%ld",s);
getch();
}
long int sb(int x)
{long int s=1;     //初始化s
if (x==1) return (s); //注意这里
s=x*sb(x-1);
}

2005-04-15 21:57
mmmzy888
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2005-4-16
得分:0 
楼主的那个递归调用是不是没有结束的? 是死循环

如饿鬼吃东西一样学习知识
2005-04-16 01:39
guozhencai
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-3-9
得分:0 
#include "stdio.h"
#include "conio.h"
main()
{
int i;
unsigned long int s;
unsigned long int sb(int);
s = 0;
for(i=20;i>0;i--)
s=s+sb(i);
printf("%lu\n",s);
getch();
}
unsigned long int sb(int x)
{unsigned long int s;
if (x==1) s=1;
else
   s=x * sb(x-1);
return (s);
} 
2005-04-16 07:21
niekui
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2005-4-16
得分:0 
if (x==1) s==1;
s=x*sb(x-1);

提供美国主机

QQ:349972207
2005-04-16 10:48
qxcyz
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-4-11
得分:0 
懂了

O米陀佛
2005-04-16 23:59
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
得分:0 
#include <stdio.h>
#include <conio.h>
main()
{
int i;
long int s=0;   //你这里没赋初始值就直接参加运算。当然错了
long int sb(int);
for(i=20;i>0;i--)
s=s+sb(i);
printf("%ld\n",s);
getch();
}
long int sb(int x)
{long int s;
if (x==1) s=1;   //这里你写错了s==1.应该是s=1;
else                   //  你少了个else
s=x*sb(x-1);
return (s);
}
 
 
我上机帮你调试成功了。

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-04-17 00:31
guozhencai
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-3-9
得分:0 
谢谢!!!!
2005-04-17 09:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-15741-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.086788 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved