matlab编写了一个勒让德多项式的递归问题,最后递归公式一直显示是无限递归,希望找出问题

img

你好,你的表达式最后一个else后面的一直都是myLegendre(n,x)也就是说n不会变化,最后就是无线循环,正确的应该是
y=((2*n-1)*x-myLegendre(n-1, x)-(n-1)*myLegendre(n-2, x))/n,看里面应该是n-1和n-2,这样整数n递归才会到0或1.
同时你的递归调用每行代码后面加个分号,防止大量输出

function y = myLegendre(n, x)
if(n==0)
    y = 1;
elseif(n==1)
    y = x;
else
    y = ((2*n-1)*x-myLegendre(n-1, x)-(n-1)*myLegendre(n-2, x))/n;
end
end

将这个代码保存为myLegendre.m文件,然后在命令行调用即可:

>> myLegendre(2,3)

ans =

    2.5000

或者在mlx文件里面:

img

有帮助望采纳呢