| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 691 人关注过本帖
标题:我的程序没法输出结果啊,c++
只看楼主 加入收藏
一の小菜鸟
Rank: 1
等 级:新手上路
帖 子:20
专家分:1
注 册:2017-1-12
结帖率:100%
  问题点数:0  回复次数:9   
我的程序没法输出结果啊,c++
用递归方法求n阶勒让德多项式的值,递归公式为:
        {    1                                     (n=0)
  Pn(x)={    x                                     (n=1)
        {   ((2n-1)*x-Pn-1(x)-(n-1)*Pn-2(x))/n     (n>=1)
我的程序在这里
#include <iostream>
#include <cmath>
using namespace std;
int p (int n,int x)
{
    if (n==0)
    {
        return 1;
    }
    if (n==1)
    {
        return x;
    }
    else if (n>=1)
    {
        return ((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n;
    }
}
int main ()
{
    int n,x;
    cin>>n>>x;
    cout<<p(n,x)<<endl;
    return 0;
}
搜索更多相关主题的帖子: include return 多项式 
2017-01-13 19:00
一の小菜鸟
Rank: 1
等 级:新手上路
帖 子:20
专家分:1
注 册:2017-1-12
  得分:0 
当n在等于0的时候和在n等于1的时候都是没问题的,就是最后一个时候最重要的出了问题。
2017-01-13 19:01
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:28
帖 子:1627
专家分:5219
注 册:2016-12-1
  得分:0 
、编辑掉,貌似弄错了

[此贴子已经被作者于2017-1-13 19:09编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-01-13 19:05
一の小菜鸟
Rank: 1
等 级:新手上路
帖 子:20
专家分:1
注 册:2017-1-12
  得分:0 
回复 3楼 renkejun1942
这样对吗,表达式里面y应该是减号的啊,为什么是*呢?结果不一样了吧?
2017-01-13 19:08
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:28
帖 子:1627
专家分:5219
注 册:2016-12-1
  得分:0 
回复 4楼 一の小菜鸟
我百度的。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-01-13 19:09
一の小菜鸟
Rank: 1
等 级:新手上路
帖 子:20
专家分:1
注 册:2017-1-12
  得分:0 
回复 5楼 renkejun1942
……不过很感谢
2017-01-13 19:13
zbjzbj
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:42
帖 子:525
专家分:2585
注 册:2011-4-22
  得分:0 
网上搜的答案,懒得写了
估计你是数据类型的问题。return int 是要出问题的,应该返回float或者double。强制类型转换成int以后就不对了。
double legendre(int n, double x)
{
if (n == 0) return 1;
else if (n == 1) return x;
else return ( (2*n-1)*x - legendre(n-1,x) - (n-1)*legendre(n-2,x) ) / n;
}
2017-01-13 19:23
r316999443
Rank: 5Rank: 5
来 自:星城长沙
等 级:等待验证会员
威 望:1
帖 子:555
专家分:324
注 册:2006-11-7
  得分:0 
#include <iostream>
#include <cmath>
using namespace std;
double p (int n,int x)
{
    if (n==0)
    {
        return 1;
    }
    if (n==1)
    {
        return x;
    }
    else if (n>=1)
    {
        return ((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n;
    }
}
int main ()
{
    double p(int,int);
    int n,x;
    cin>>n>>x;
    cout<<p(n,x)<<endl;
    return 0;
}
2017-01-13 21:15
ICU
Rank: 4
等 级:业余侠客
威 望:2
帖 子:92
专家分:268
注 册:2017-1-14
  得分:0 
乍一看上去,
    if (n==1)...
     else if (n>=1)...
逻辑上有点不太清晰。n=1时究竟是怎么个情况,是否按照楼主预想的分支进行的呢
2017-01-15 06:53
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
  得分:0 
估计是数据类型问题~多项式最后一项有/n~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-15 16:57
快速回复:我的程序没法输出结果啊,c++
数据加载中...
 
   



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

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