| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 712 人关注过本帖
标题:(递归)运行有警告,结果错误,怎么回事
只看楼主 加入收藏
cquwt
Rank: 1
等 级:新手上路
帖 子:41
专家分:2
注 册:2013-12-24
结帖率:69.23%
收藏
已结贴  问题点数:20 回复次数:18 
(递归)运行有警告,结果错误,怎么回事
程序代码:
#include<stdio.h>
#define N 10
void main()
{ 
    double x(int n);
    double s(int n);
    double n,sum;
    sum=s(n);
    printf("前10项和为: %lf\n ",sum);
    printf("\n");
}
double s(int n)
{  
   double x(int n);
   double i,sum=3;
   for(i=3;i<=10;i++)
       sum+=x(n);
    return sum;
}
double x(int n)
{   
     double x1=1,x2=2,x3;
         if(n=1)
             return x3=1;
         else if(n=2)
             return x3=2;
         else 
         {   x(n);
             x3=x1*x2;
             return x(n--);
         }
         return x3;
}
怎么总有警告啊,哪出问题了呢
就算没警告,结果也不对



                  1             (n=1)
题目:求数列xn=   2             (n=2)  的前10项和。
                 Xn-1 · xn-2   (n>2)
2014-04-26 17:08
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:4 

double
x(int n)
{   
     double x1=1,x2=2,x3;
         if(n=1)   //-----------------n==1
             return x3=1;
         else if(n=2)//-----------------n==2
             return x3=2;
         else
         {   x(n);//-----------------这段重写一下,整个不对。
             x3=x1*x2;
             return x(n--);
         }
         return x3;
}
2014-04-26 17:40
cquwt
Rank: 1
等 级:新手上路
帖 子:41
专家分:2
注 册:2013-12-24
收藏
得分:0 
回复 2 楼 ying8501
怎么不对了?我又改了下,没警告了,可是结果不对。
程序代码:
#include<stdio.h>
void main()
{ 
    double x(double n);
    double s(double n);
    double n=10,sum;
    sum=s(n);
    printf("前10项和为: %lf\n ",sum);
    printf("\n");
}
double s(double n)
{  
   double x(double n);
   double i,sum=3;
   for(i=3;i<=10;i++)
       sum+=x(n);
    return sum;
}
double x(double n)
{   
     double x1=1,x2=2,x3;
         if(n=1)
             return x3=1;
         else if(n=2)
             return x3=2;
         else 
         {   x(n--);
             x3=x1*x2;
             return x(n--);
         }
}
2014-04-26 23:11
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
你的思路完全乱的,下面xn就是一个分段函数,按3分支的分段函数来写就是了。
                  1             (n=1)
题目:求数列xn=   2             (n=2)  的前10项和。
                 Xn-1 · xn-2   (n>2)

double
x(double n)
{   
     double y;
     if( n==1 ) y=1;
     else if( n==2 ) y=2;
     else y=x(n-1)*x(n-2);
     return y;
}
2014-04-26 23:28
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
另外,只有语法错误才有警告。算法错误时不可能有警告的。如,加法写成减法系统自然不会警告。
2014-04-27 08:39
cquwt
Rank: 1
等 级:新手上路
帖 子:41
专家分:2
注 册:2013-12-24
收藏
得分:0 
回复 5 楼 ying8501
程序代码:
#include<stdio.h>
void main()
{ 
    double x(double n);
    double s(double n);
    double n=10,sum;
    sum=s(n);
    printf("前10项和为: %lf\n ",sum);
    printf("\n");
}
double s(double n)
{  
   double x(double n);
   double i,sum=1;
   for(i=3;i<=10;i++)
       sum+=x(n);
       return sum;
}
double x(double n)
{   
         double y;
         if(n=1)
             return y=1;
         else if(n=2)
             return y=2;
         else 
         {   y=x(n)*(n-1);
             return y;
         }
}
你说的是这个?本质上不是一样的吗?改成这个结果还是一样错误
2014-04-27 22:10
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
真是无语了。我两次给你标出来,你都看不见。你的条件n=1,n=2错了!!!要改成n==1,n==2!!!
2014-04-28 06:37
cquwt
Rank: 1
等 级:新手上路
帖 子:41
专家分:2
注 册:2013-12-24
收藏
得分:0 
回复 7 楼 ying8501
我改了,没用啊,结果什么也没有
2014-04-28 10:39
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
你贴出来的程序还是错的!
double x(double n)
{   
     double y;
     if( n==1 ) y=1;
     else if( n==2 ) y=2;
     else y=x(n-1)*x(n-2);
     return y;
}
和下面的函数本质一样,和你的不一样!
double x(double n)
{   
     double y;
     if( n==1 ) return 1;
     else if( n==2 ) return 2;
     else
    {
       y=x(n-1)*x(n-2);
         return y;
    }
}
2014-04-28 13:22
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
你仔细比一下红色的地方,这两个函数和你的是一样吗?!!!
2014-04-28 13:23
快速回复:(递归)运行有警告,结果错误,怎么回事
数据加载中...
 
   



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

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