[原创]输出结果竟会不一样。。。
float p();void main()
{int n;
float x;
clrscr();
printf("Input n&x:");
scanf("%d %d",&n,&x);
printf("The result is:%3.2f",p(n,x));
getch();
}
float p(int n,float x)
{float r;
if(n==0) return(1);
else if(n==1){r=x; return(r);}
else {r=((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n;
return(r);
}
}
所要解 决的问题是
用递归法求n阶勒让德多项式的值,递归公式为:
pn(x)= x (n=1)
((2n-1)*x-pn-1(x)-(n-1)*pn-2(x))/n (n>1)
当我输入n=1,x=2时可以正常输出也就是说输出2.00;可是当x为其他值是问题就出现了,不在输出x的值了,让人很郁闷啊,大家在帮忙看一下吧。。。。。。
----------------解决方案--------------------------------------------------------
关键应当是else if那吧但我自己看不出错误啊。。。。
----------------解决方案--------------------------------------------------------
float p();
这是一个问题
这样定义不好
----------------解决方案--------------------------------------------------------
回复:(指幕天)[原创]输出结果竟会不一样。。。
关键是你不了解该特殊函数。其实它的定义域为[-1,+1]而已。
我的专业就是玩这些特殊函数的,
我还知道这道题来自老谭的书。
所以,您的自变量x应定义为float型。
OK?
----------------解决方案--------------------------------------------------------
怎么都是老谭的书啊
----------------解决方案--------------------------------------------------------