怪题呀怪题???????????能解决的举手???????????????????????????????????????????????????

wh_5 2005-06-02 06:28:44
功能描述如下:
int fun(sum){
int a,sum;
scanf(a);
if(a==0)sum=0;
else{fun(sum);sum+=a;}
printf(sum);
}
问题:1。sum的输出是不是总为0;
2。怎么用一个非递归的算法解决这个问题;



...全文
230 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
sailor_Song 2005-06-03
  • 打赏
  • 举报
回复
功能描述如下:
int fun(sum){
int a,sum;
scanf(a);
if(a==0)sum=0;
else{fun(sum);sum+=a;}
printf(sum);
}
问题:1。sum的输出是不是总为0;
2。怎么用一个非递归的算法解决这个问题;

伪代码,但是可以说你这段程序问题挺多的,
wh_5 2005-06-03
  • 打赏
  • 举报
回复
To:Michael_555(Sell Myself)
能不能留下个QQ交流一下呀!
wh_5 2005-06-03
  • 打赏
  • 举报
回复
功能描述如下:
int fun(sum){
scanf(a);
if(a==0)sum=0;
else{fun(sum);sum+=a;}
printf(sum);
}

问题:
1。sum的输出是不是总为0;
答:不是。
如果sum被初始化为w;如果输入是n1,n2,n3,n4,0;( n1,n2,n3,n4都不为零,输入0表示结束输入)
那么输出是:
0
w+n4
w+n3
w+n2
w+n1

2。怎么用一个非递归的算法解决这个问题;
答:使用栈代替递归
int fun(sum){
int a;
scanf(a);
while( a!=0 )
{
Push( stack1,a );
Push( stack2, sum );
scanf(a);
}
sum = 0;
printf( sum );
while( ( Pop( stack1, a ) != NULL )&&
( Pop( stack2, sum ) != NULL ) )
{
sum+=a;
printf(sum);
}
}

大概懂了,但还是不是蛮明白。郁闷~~~~~~~~~
cbc 2005-06-03
  • 打赏
  • 举报
回复
scanf("%d",&a)
Michael_555 2005-06-02
  • 打赏
  • 举报
回复
fun(sum), sum作为形参。

对sum的修改,例如对sum赋值sum=0;

不会对它的上一层的函数内的变量sum有影响。
Michael_555 2005-06-02
  • 打赏
  • 举报
回复
fun(sum), sum作为形参。

sum=0;

不会对它的上一层的函数内的变量sum有影响。
Michael_555 2005-06-02
  • 打赏
  • 举报
回复
功能描述如下:
int fun(sum){
scanf(a);
if(a==0)sum=0;
else{fun(sum);sum+=a;}
printf(sum);
}

问题:
1。sum的输出是不是总为0;
答:不是。
如果sum被初始化为w;如果输入是n1,n2,n3,n4,0;( n1,n2,n3,n4都不为零,输入0表示结束输入)
那么输出是:
0
w+n4
w+n3
w+n2
w+n1

2。怎么用一个非递归的算法解决这个问题;
答:使用栈代替递归
int fun(sum){
int a;
scanf(a);
while( a!=0 )
{
Push( stack1,a );
Push( stack2, sum );
scanf(a);
}
sum = 0;
printf( sum );
while( ( Pop( stack1, a ) != NULL )&&
( Pop( stack2, sum ) != NULL ) )
{
sum+=a;
printf(sum);
}
}


gogdo 2005-06-02
  • 打赏
  • 举报
回复
哦不好意思我没有看到这是数据结构与算法专区。
gogdo 2005-06-02
  • 打赏
  • 举报
回复
对不起,上面的是按错键了.
int fun(sum)
{
int a;
/* int sum;*/
scanf("%d",&a);
if(a==0)
sum=0;
else
{
fun(sum);
sum+=a;
}
printf("%d",sum);
}

你的scanf,printf都用错了吧。
还有你怎么能用二个SUM这样的话就的形参重定了。
返回值呢?sum : a;

你是code能在机器上运行吗???!!
wh_5 2005-06-02
  • 打赏
  • 举报
回复
int fun(sum){
scanf(a);
if(a==0)sum=0;//不管怎样,只有在执行了这句后才程序才会结束。而执行了这句后sum=0;
//所以我感觉输出的sum可能始终是0
else{fun(sum);sum+=a;}
printf(sum);
}
gogdo 2005-06-02
  • 打赏
  • 举报
回复
int fun(sum)
{
int a;
int sum;
scanf(a);
if(a==0)sum=0;
else{fun(sum);sum+=a;}
printf(sum);
}
wh_5 2005-06-02
  • 打赏
  • 举报
回复
To: goodboy1881(三井寿)(闭关倒计时)
如果sum输出始终是0。。那你的第二个问题也明显是错的!!
wh_5 2005-06-02
  • 打赏
  • 举报
回复
To: goodboy1881(三井寿)(闭关倒计时)
我怎么感觉输出的sum可能始终是0呀!
wh_5 2005-06-02
  • 打赏
  • 举报
回复
To: aheadyes()
功能描述如下:
int fun(sum){
scanf(a);
if(a==0)sum=0;
else{fun(sum);sum+=a;}
printf(sum);
}
问题:1。sum的输出是不是总为0;
2。怎么用一个非递归的算法解决这个问题;

上面不是C程序呀。只是描述;
积木 2005-06-02
  • 打赏
  • 举报
回复
我也是写一个意思:)
积木 2005-06-02
  • 打赏
  • 举报
回复
1。不是
2。
int fun(void){
int sum = 0;
int a=1;
while(a!=0){
scanf(a);
sum+=a;
}
printf(sum);
}
aheadyes 2005-06-02
  • 打赏
  • 举报
回复
int fun(sum){
int a,sum;//怎么有两个sum?
scanf(a);//你确定scanf,长这样子?
if(a==0)sum=0;
else{fun(sum);sum+=a;}
printf(sum);//你确定scanf,长这样子?
// 返回值呢?
}
//先把程序写正确了再说;
wh_5 2005-06-02
  • 打赏
  • 举报
回复
功能描述如下:
int fun(sum){
scanf(a);
if(a==0)sum=0;
else{fun(sum);sum+=a;}
printf(sum);
}
问题:1。sum的输出是不是总为0;
2。怎么用一个非递归的算法解决这个问题;

上面不是C程序呀。只是描述;

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧