这个C++程序哪里出毛病了?

来源:百度知道 编辑:UC知道 时间:2024/06/06 05:11:20
题目:用递归方法求n阶勒让德多项式的值,递归公式为
1 (n=0)
Pn(x)={x (n=1)
((2n-1)*x-Pn-1(x)-(n-1)*Pn-2(x))/n (n>1)
注明:Pn(x)中n是下标.后面的Pn-1(x)和Pn-2(x),n-1和n-2也是下标.
我写的答案是:
#include<iostream>
using namespace std;
int main()
{int x,n,k;
int P(int x,int n);
cout<<"请输入x的值:"<<endl;
cin>>x;
cout<<"请输入n的值:"<<endl;
cin>>n;
while(n<0)
{cout<<"必须输入一个非负数!重新输入:"<<endl;
cin>>n;
}
k=P(x,n);
cout<<"答案为:"<<k<<endl;
return 0;
}

int P(int x,int n)
{int f;
if(n=0)f=1;
else
if(n=1)f=x;
else
if(n>1)f=((2n-1)*x-P(x,n-1)-(n-1)*P(x,n-2))/n;
return f;
}
但是VC++6.0不能通过编译,说是倒数第3行有问题,但是我实在是找不出问题在哪.
能否帮我看看哪里出了问题,求个能运行正常的正确答案.

函数体里面的内容从语法上讲,应该是这么写:

int P(int x,int n)
{int f;
if(n==0)f=1;
else
if(n==1)f=x;
else
if(n>1)
f=((2*n-1)*x-P(x,n-1)-(n-1)*P(x,n-2))/n;
return f;
}

其它我就不管了。。。

你这个if..else if..else if 结构不完整,这样的结尾应该是个以else结尾的``
把倒数第三行的 if(n>1) 删掉试试``