| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 438 人关注过本帖
标题:初学者的一个小程序求9999
只看楼主 加入收藏
ycxue46
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-4-16
收藏
 问题点数:0 回复次数:5 
初学者的一个小程序求9999

我是初学者我想用递归函数做一个输出s=1!+2!+3!+4!+...+n!的程序为什么输出的结果却跟我想的不一样.请指大虾们指教.


long sky(int n,int s)
{
if(n<=0) printf("error");
else if(n=1) s=1;
else s=n*sky(n-1,s);
return(s);
}
main()
{
long n,i,s,k;
s=0;
k=1;
scanf("%d",n);
for(i=n;i>=1;i--)
s+=sky(i,k);
printf("%d",s);
}

2007-04-19 10:38
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
long sky(int n,int s)
{
if(n<=0) printf("error");//不会执行到
else if(n==1) s=1;//==
else s=n*sky(n-1,s);//这样的递归式应该是错了,参数s没有必要
return(s);
}

倚天照海花无数,流水高山心自知。
2007-04-19 10:43
ycxue46
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-4-16
收藏
得分:0 

哦.3Q

2007-04-19 10:47
ycxue46
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-4-16
收藏
得分:0 
long sky(int n)
{
int s;
if(n==1) s=1;
else s=n*sky(n-1);
return(s);
}
main()
{
long n,i,s;
s=0;
scanf("%d",n);
for(i=n;i>=1;i--)
s+=sky(i);
printf("%d",s);
}
不管输什么都是出现0NULL pointer assignment这到底是什么问题啊

[此贴子已经被作者于2007-4-19 11:14:59编辑过]

2007-04-19 11:03
djp
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-12-28
收藏
得分:0 
#include<stdio.h>
long sky(int n)
{
int s;
if(n==1) s=1;
else s=n*sky(n-1);
return(s);
}
void main()
{
long n,i,s;
s=0;
scanf("%d",&n); //scanf()里面是&n!!;
for(i=n;i>=1;i--)
s+=sky(i);
printf("%d\n",s);
}

2007-04-19 11:15
ycxue46
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-4-16
收藏
得分:0 
忘记取地址运算符了.非常感谢你.我看了半天都没看出来
2007-04-19 11:19
快速回复:初学者的一个小程序求9999
数据加载中...
 
   



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

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