我的matlab函数有以下代码,它应该取多个数字的lcm。我有以下内容:
function y = lcm1(x)
n = length(x);
if n < 2
y = x;
elseif n == 2
y = lcm(x(1), x(2));
else
y = lcm(x(1), x(2));
for i = 3:n
y = lcm(x(i) ,y);
end
end
然而它似乎无法运行,但如果有人能看到这个,我找不到错误?我知道这很简单。
感谢您的帮助
答案 0 :(得分:2)
您的代码似乎运行良好。
稍微neater方法是使用递归:
function y = lcm1(x)
n = length(x);
if n < 2 %// 0 or 1 elements: nothing to do
y = x;
elseif n == 2 %// 2 elements: call lcm to do the actual work
y = lcm(x(1), x(2));
else %// combine first two numbers with lcm, then call lcm1 again
y = lcm1([lcm(x(1), x(2)) x(3:end)]);
end
答案 1 :(得分:2)
你的功能没有任何问题,虽然路易斯的版本略有改进。
如果无法运行,请按照以下说明操作:
lcm1
。请注意,顶部栏中显示完整路径(如果不太长)。它必须以...\lcm1.m
结尾。
请注意,我在MATLAB文件夹中有一些灰色的文件夹(graphViz4Matlab)。 MATLAB在这些文件夹中找不到任何文件/功能。通过双击,您将使其成为当前文件夹,右键单击它可以获得多个选项,包括将其添加到MATLAB路径。您可能希望将其添加到路径中,这应该使其显示为黑色。
完成上述操作后,应在MATLAB的命令窗口中编写lcm1(1:5)
(如上面的第二个屏幕截图所示:
lcm1(1:5)
ans =
60