所以我必须编写解决这些规则的程序:
找到一个六位数字,其中第一个数字比第三个数字多一个,第二个数字比第四个数字少一个,第五个数字比第三个数字少一个,第六个数字比第四个数字多一个数字。第二个和第三个数字的总和等于第一个数字。所有数字的总和是三十。
我只允许使用嵌套的for
和if
语句,这就是我想出的:
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 = 0
,n3 = 9
和总和n1+n2+...+n6 = 22
没有{ {1}}。这是我在Matlab的第一个项目,所以我希望我能为这个问题提供足够的信息,
谢谢!
答案 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
。