| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 712 人关注过本帖
标题:(递归)运行有警告,结果错误,怎么回事
取消只看楼主 加入收藏
cquwt
Rank: 1
等 级:新手上路
帖 子:41
专家分:2
注 册:2013-12-24
结帖率:69.23%
收藏
已结贴  问题点数:20 回复次数:5 
(递归)运行有警告,结果错误,怎么回事
程序代码:
#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
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
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
cquwt
Rank: 1
等 级:新手上路
帖 子:41
专家分:2
注 册:2013-12-24
收藏
得分:0 
回复 7 楼 ying8501
我改了,没用啊,结果什么也没有
2014-04-28 10:39
cquwt
Rank: 1
等 级:新手上路
帖 子:41
专家分:2
注 册:2013-12-24
收藏
得分:0 
回复 10 楼 ying8501
一样的,这不关这些的问题 ,我知道哪错了
程序代码:
#include<stdio.h>
void main()
{ 
    double x(double n);
    double s(double n);
    double n,sum;
    sum=s(10);
    printf("前10项和为: %.0lf\n ",sum);
    printf("\n");
}
double s(double n)
{  
   double x(double n);
   double sum=3;
   for(n=10;n>=3;n--)
       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-1)*x(n-2);
             return y;
         }
}
这样运行才完全正确
2014-04-28 23:53
cquwt
Rank: 1
等 级:新手上路
帖 子:41
专家分:2
注 册:2013-12-24
收藏
得分:0 
回复 10 楼 ying8501
一样的,确实不是这儿错了 ,我做出来了
程序代码:
#include<stdio.h>
void main()
{ 
    double x(double n);
    double s(double n);
    double n,sum;
    sum=s(10);
    printf("前10项和为: %.0lf\n ",sum);
    printf("\n");
}
double s(double n)
{  
   double x(double n);
   double sum=3;
   for(n=10;n>=3;n--)
       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-1)*x(n-2);
             return y;
         }
}
这样才对
2014-04-28 23:54
快速回复:(递归)运行有警告,结果错误,怎么回事
数据加载中...
 
   



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

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