你好,你的表达式最后一个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文件里面:
有帮助望采纳呢