【问题标题】:Matlab loop not working properlyMatlab循环无法正常工作
【发布时间】:2015-06-13 03:36:55
【问题描述】:
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)。

【问题讨论】:

    标签: matlab loops for-loop


    【解决方案1】:

    您不是在测试 largest 是否真的是该代码中最大的。当您遍历循环时,可能会在较大的回文之后检测到较小的回文,并且您正在将 最大的 重新分配给它。

    通过添加测试来尝试这个新回文是否大于当前最大

    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; 
    

    因为从您的问题中不清楚它们的用途。如果出于未显示的原因需要它们,请重新添加它们。

    【讨论】:

      猜你喜欢
      • 2019-01-01
      • 2014-12-02
      • 2013-08-09
      • 2013-10-30
      • 2013-10-19
      • 2017-02-03
      相关资源
      最近更新 更多