Matlab lcm多变量检查

时间:2014-09-22 18:26:39

标签: matlab

我的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

然而它似乎无法运行,但如果有人能看到这个,我找不到错误?我知道这很简单。

感谢您的帮助

2 个答案:

答案 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)

你的功能没有任何问题,虽然路易斯的版本略有改进。

如果无法运行,请按照以下说明操作:

  1. 确保该文件与函数名称相同,在本例中为lcm1。请注意,顶部栏中显示完整路径(如果不太长)。它必须以...\lcm1.m结尾。
  2. enter image description here

    1. 确保您保存的文件夹位于MATLAB路径中。在我的情况下,此文件夹是“C:\ Users \ Robert \ Documents \ MATLAB”。您可以在此处找到当前文件夹:
    2. enter image description here

      请注意,我在MATLAB文件夹中有一些灰色的文件夹(graphViz4Matlab)。 MATLAB在这些文件夹中找不到任何文件/功能。通过双击,您将使其成为当前文件夹,右键单击它可以获得多个选项,包括将其添加到MATLAB路径。您可能希望将其添加到路径中,这应该使其显示为黑色。

      完成上述操作后,应在MATLAB的命令窗口中编写lcm1(1:5)(如上面的第二个屏幕截图所示:

      lcm1(1:5)
      ans =
          60