【问题标题】:For loop nested in while loop嵌套在while循环中的for循环
【发布时间】:2013-10-26 17:58:20
【问题描述】:

我在 Matlab 中编写了一个 while 循环,它应该确定参数“n”的值“a”是否超过值 300。我知道“n”应该是 17,但我得到了一个值4 代替。有人看到问题了吗?

代码如下:

a = 10;
k = 0.5;
n = 2;
while a < 300
    for m = 1:5
        a = a + (a*k) + n;
    end
    n = n + 1;
end

编辑: 由于 Barmar 的评论,我意识到我没有重新初始化我的“a”变量。虽然代码可能看起来效率不高,但这对我有用:

a = 10;
k = 0.5;
n = 2;
while a < 300
    a = 10;
    for m = 1:5
        a = a + (a*k) + n;
    end
    if a >= 300
        break
    end
    n = n + 1;
end

【问题讨论】:

  • 当您尝试不同的n 值时,您不需要重新初始化a 吗?
  • 也许这个公式并没有像你想象的那样做。你将a 乘以 1.5 并加 2。你这样做了 5 次,然后将 n 增加到 3。此时,a 已经大于 100。我认为 n 不会一直到 17 岁。
  • 谢谢巴马尔。我想出了如何修复我的代码。

标签: matlab for-loop while-loop


【解决方案1】:

如果您的公式是正确的,那么 4 就是您应该期望的答案。第一个 for 循环运行将 a 转换为相应的值:

17, 27, 42, 65, 99

然后将 n 变为 3。下一次运行将 a 变为:

151, 229, 346, 522, 786

请注意,a 现在 > 300,但我们必须再将 n 增加一次。因此 n = 4。

【讨论】:

    猜你喜欢
    • 2023-03-02
    • 2020-10-09
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 2015-05-27
    相关资源
    最近更新 更多