
C语言 用递归法求n阶勒让德多项式的值
#include<stdio.h>floatp(intn,intx){intf;f=p(n)if(n==0)f=1;elseif(n==1)f=x;elseif(n>=1...
#include <stdio.h>
float p (int n,int x)
{int f;
f=p(n)
if(n==0)
f=1;
else if (n==1)
f=x;
else if (n>=1)
f=((2*n-1)*x-p(n-1)-(n-1)*p(n-2))/n;
return f;
}
void main ()
int n,x;
printf("请输入n,x的值:");
scanf("%d%d",&n,&x);
printf("结果为:%d\n",p(n,x));
}
怎么修改?谢谢
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(4) : error C2660: 'p' : function does not take 1 parameters
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(5) : error C2143: syntax error : missing ';' before 'if'
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(10) : error C2660: 'p' : function does not take 1 parameters
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(10) : error C2660: 'p' : function does not take 1 parameters
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(11) : warning C4244: 'return' : conversion from 'int' to 'float', possible loss of data
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(16) : warning C4518: 'int ' : storage-class or type specifier(s) unexpected here; ignored
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(16) : error C2146: syntax error : missing ';' before identifier 'n'
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(16) : fatal error C1004: unexpected end of file found
Error executing cl.exe. 展开
float p (int n,int x)
{int f;
f=p(n)
if(n==0)
f=1;
else if (n==1)
f=x;
else if (n>=1)
f=((2*n-1)*x-p(n-1)-(n-1)*p(n-2))/n;
return f;
}
void main ()
int n,x;
printf("请输入n,x的值:");
scanf("%d%d",&n,&x);
printf("结果为:%d\n",p(n,x));
}
怎么修改?谢谢
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(4) : error C2660: 'p' : function does not take 1 parameters
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(5) : error C2143: syntax error : missing ';' before 'if'
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(10) : error C2660: 'p' : function does not take 1 parameters
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(10) : error C2660: 'p' : function does not take 1 parameters
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(11) : warning C4244: 'return' : conversion from 'int' to 'float', possible loss of data
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(16) : warning C4518: 'int ' : storage-class or type specifier(s) unexpected here; ignored
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(16) : error C2146: syntax error : missing ';' before identifier 'n'
C:\Program Files\Microsoft Visual Studio\MyProjects\2\2.cpp(16) : fatal error C1004: unexpected end of file found
Error executing cl.exe. 展开
4个回答
展开全部
首先把你的float p改成int p再说,int,float,double,char的占用字节不同,而且p函数中返回的是Int数据,可是他是一个float数据,打印的时候又是d%,都是些基础问题啊。
另外一些问题是那个公式,不能那么写的。你把原题发出来,我给你写吧。。。
记得用到一些数学公式的时候记得加#include <math.h>
另外一些问题是那个公式,不能那么写的。你把原题发出来,我给你写吧。。。
记得用到一些数学公式的时候记得加#include <math.h>
更多追问追答
追问
递归公式为
1 (n=0)
pn(x)= x (n=1)
((2n-1)xpn-1(x)-(n-1)pn-2(x))/n (n>1)
追答
首先递归法不是指公式递归,而是应用C的方法写它是用递归。我写一下吧,你先把你的那些错误改正,先让系统通过,留个你的QQ,我加你
展开全部
#include <stdio.h>
float p (int n,int x)
{
float f;
//f=p(n,x);
if(n==0)
f=1;
else if (n==1)
f=(float)x;
else if (n>=1)
f=((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n;
return f;
}
void main (){
int n,x;
printf("请输入n,x的值:");
scanf("%d%d",&n,&x);
printf("结果为:%d\n",p(n,x));
}
程序已经可以运行了,但不知道这是干嘛的。。。
float p (int n,int x)
{
float f;
//f=p(n,x);
if(n==0)
f=1;
else if (n==1)
f=(float)x;
else if (n>=1)
f=((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n;
return f;
}
void main (){
int n,x;
printf("请输入n,x的值:");
scanf("%d%d",&n,&x);
printf("结果为:%d\n",p(n,x));
}
程序已经可以运行了,但不知道这是干嘛的。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
float p (int n,int x)
{
int f;
if(n<0)
{
f = -1;
printf("error, n should be larger than 0");
}
else if(n==0)
{
f = 1;
}
else if (n==1)
{
f = x;
}
else if (n>1)
{
f=((2*n-1)*x*p(n-1, x)-(n-1)*p(n-2,x))/n;
}
return f;
}
void main ()
{
int n,x;
printf("请输入n,x的值:");
scanf("%d%d",&n,&x);
printf("结果为:%d\n",p(n,x));
getchar();
}
float p (int n,int x)
{
int f;
if(n<0)
{
f = -1;
printf("error, n should be larger than 0");
}
else if(n==0)
{
f = 1;
}
else if (n==1)
{
f = x;
}
else if (n>1)
{
f=((2*n-1)*x*p(n-1, x)-(n-1)*p(n-2,x))/n;
}
return f;
}
void main ()
{
int n,x;
printf("请输入n,x的值:");
scanf("%d%d",&n,&x);
printf("结果为:%d\n",p(n,x));
getchar();
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询