为什么Matlab会忽略我的if语句?

时间:2016-09-19 11:17:50

标签: matlab

所以我必须编写解决这些规则的程序:

找到一个六位数字,其中第一个数字比第三个数字多一个,第二个数字比第四个数字少一个,第五个数字比第三个数字少一个,第六个数字比第四个数字多一个数字。第二个和第三个数字的总和等于第一个数字。所有数字的总和是三十。

我只允许使用嵌套的forif语句,这就是我想出的:

for I = inf
    for n4 = (1:9)
        n6 = n4 + 1;
        n2 = n4 -1;
        for n3 = (1:9)
            n1 = n3 + 1;
            n5 = n3 - 1;
            if (n1 - n2 == n3)
                if (n1 + n2 + n3 + n4 + n5 + n6 == 30)
                    break
                end
            end
        end
    end
end

我遇到的问题是Matlab忽略了我的所有if语句,因为在程序结束时,n1 - n2 = 0n3 = 9和总和n1+n2+...+n6 = 22没有{ {1}}。这是我在Matlab的第一个项目,所以我希望我能为这个问题提供足够的信息, 谢谢!

1 个答案:

答案 0 :(得分:1)

代码完美运行并给出正确的结果,这是唯一的问题: 正如已经告诉break中断只有1个内循环。

如果这是您的计划的完整代码,则可以使用return代替break。 其他方式: 使用一些逻辑索引。 例如:

flag = 0;

for I = inf
    for n4 = (1:9)
        n6 = n4 + 1;
        n2 = n4 -1;
        for n3 = (1:9)
            n1 = n3 + 1;
            n5 = n3 - 1;
            if (n1 - n2 == n3)
                if (n1 + n2 + n3 + n4 + n5 + n6 == 30)
                    flag = 1;
                    break
                end
            end
        end
    if flag==1
        break
    end
    end
end
顺便说一下。答案是918273