| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 714 人关注过本帖
标题:大侠帮我看看这个程序,哪有问题?
只看楼主 加入收藏
小旬_C
Rank: 2
等 级:论坛游民
帖 子:72
专家分:33
注 册:2010-7-25
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:9 
大侠帮我看看这个程序,哪有问题?
#include <stdio.h>
int addn(x)
{
   int s;
   if(x=1)
   {
       s=1;
   }
   else
   {
       s=x+addn(x-1);
   }
   return(s);
}
main()
{
       int j;
       int i=100;
      
       j=addn(100);
       printf("result:%d\n",j);
}


说是用的什么递归法求1到100的和,但是结果出来个1,怎么回事,这个程序的思路还有点模糊
搜索更多相关主题的帖子: result return include 
2010-08-11 23:53
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:1 
程序代码:
#include "stdio.h"
int s;
int addn(int x)
{
   if(x==1)
   {
       s+=1;
   }
   else
   {
       s+=x;
       addn(x-1);
   }
}
main()
{
       addn(100);
       printf("result:%d\n",s);
}
你试下 改成这样可以了!

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-12 00:29
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
收藏
得分:1 
3个问题
1:你的x没有int化   即addn(int x)
2: 你的if(x=1)应该改正为if(x==1)
3:你的主函数里的int i=100;是多余的
另外你的思路没有错
不过就是表达式太糟糕
思路倒是清晰
2010-08-12 00:36
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:1 
if(x=1)改正为if(x==1),测试通过。
2010-08-12 08:43
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:1 
x=1,应该改为x==1,OK

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-08-12 09:24
燕强
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:78
专家分:188
注 册:2010-8-11
收藏
得分:1 
3个问题
1:你的x没有int化   即int addn(int x)
2: 你的if(x = 1)应该改正为if(x == 1)
3:你的主函数里的int i=100;是多余的
另外你的思路没有错
不过就是表达式太糟糕
思路倒是清晰

同感!!
2010-08-12 09:43
promising
Rank: 3Rank: 3
来 自:上海
等 级:论坛游侠
帖 子:87
专家分:147
注 册:2009-8-31
收藏
得分:1 
回复 楼主 小旬_C
程序代码:
#include <stdio.h>
int addn( int x)/*////////////////////*/

{
   static int s=0;
   if(x==1)
   {
       return 1/*////////////////////*/
   }
   else
   {
       s=x+addn(x-1);
   }
   return s;
}
void main()
{
       int j;
       j=addn(100);
       printf("result:%d\n",j);
}
这样可以~递归~

向前走着……
2010-08-12 15:16
sdmscu
Rank: 2
等 级:论坛游民
帖 子:32
专家分:15
注 册:2010-7-7
收藏
得分:1 
正解:
#include <stdio.h>
int addn( int x)
{
    int s=0;
    if(x==1)
    {
        s++;
    }
    else
    {
        s=x+addn(x-1);
    }
    return(s);
}


int main(void){
    int j;
    j=addn(100);
    printf("result;%d",s);
    return 0;
}

lz程序存在如下问题:
1.X 是局部变量 ,在函数内声明(注:局部变量每次调用都要重新分配内存单元)
2.=和== 注意区别
3.addn(100)=addn(99)+100=add(98)+99+100=.......=addn(1)+2+ .....+100  当调用addn(1)时,你的S还没有初值,所以肯定会出错。
2010-08-12 20:35
lei351530496
Rank: 2
等 级:论坛游民
帖 子:13
专家分:19
注 册:2010-8-6
收藏
得分:0 
#include <stdio.h>
int addn(int x)
{
   int s;
   if(x==1)
   {
       s=1;
   }
   else
   {
       s=x+addn(x-1);
   }
   return(s);
}
main()
{
       int j;
      
      
       j=addn(100);
       printf("result:%d\n",j);
       getch();
}
这样就可以了,你其实没多大错误的
2010-08-13 20:35
richardhua
Rank: 1
等 级:新手上路
帖 子:5
专家分:9
注 册:2010-4-23
收藏
得分:0 
我感觉这样好一点
程序代码:
int add(int n)
{
    int sum=0;
    if(0==n)
        return sum;
    else
        return sum=n+add(n-1);
}


[ 本帖最后由 richardhua 于 2010-8-14 10:20 编辑 ]
2010-08-14 10:14
快速回复:大侠帮我看看这个程序,哪有问题?
数据加载中...
 
   



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

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