Code Bye

小白求问,关于函数的递归调用,求指导答

题目如下:用递归方法求n解勒让德多项式
#include<stdio.h>
#include<stdlib.h>
int a,b,c,y,z,i,j,k,n;
double x;
double pnx(int,double);
int main()
{
printf(“请输入n(n>=0)和x:\n\n”);
scanf(“%d %lf”,&n,&x);
if(n<0) printf(“输入数据错误!”);
else printf(“%lf”,pnx(n,x));
return 0;
}
double pnx(int a,double b)
{
if(a=0) k=1;
else if(a=1) k=x;
else while(a>2) k=((2*a-1)*b*pnx(a-1,b)-(a-1)*pnx(a-2,b))/a;
return k;
}
但本人输入的n>=2时,x无论输入多少,都是输出x原本的值,求高手解答,谢谢。
解决方案

20

if(a=0)
改成
if(a==0)
else if(a=1)
改成
else if(a==1)

20

引用:
Quote: 引用:

if(a=0)
改成
if(a==0)
else if(a=1)
改成
else if(a==1)

假如你的n是2,那么pow将匹配else中内容,而else后面的while又要求>2,所以什么都没有执行到


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明小白求问,关于函数的递归调用,求指导答