Matlab循环不能正常工作

时间:2015-06-13 03:36:56

标签: matlab loops for-loop

largest = 0;
num = 0;
temp = 0;
num_flip = 0;

for x = 100 : 999

    for y = x : 999
       num = x*y;
       temp = num2str(num);
       num_flip = str2double(fliplr(temp));

       if num/num_flip == 1
          largest = num;
          one = x;
          two = y;
       end
   end
   end

我正在尝试找到由两个3位数字的乘积制成的最大回文,但由于某种原因,我的循环停在x = 924和y = 962,但我知道这不是答案。该代码适用于2位数字(10:99)。

1 个答案:

答案 0 :(得分:0)

您没有测试最大是否真的是该代码的最大值。当您经历循环时,可能会在较大的回文后检测到较小的回文,并且您将 重新分配给它。

尝试使用新增的回文大于当前 最大 的附加测试:

largest = 0;
num = 0;
temp = 0;
num_flip = 0;

for x = 100 : 999
    for y = x : 999
       num = x*y;
       temp = num2str(num);
       num_flip = str2double(fliplr(temp));

       if ((num/num_flip) == 1) && (num > largest)
          largest = num;
       end
 end
end

我删除了这些作业

one = x;
two = y; 

因为它不清楚你的问题是什么。如果出于未显示的原因需要将它们添加回来。