2013-10-18 356 views
0

我已经在Matlab中编写了一个while循环,它应该确定参数“n”的值为“a”超过值300.我知道“n”应该是17,但是我得到的值是4。有没有人看到这个问题?for循环嵌套在while循环中

的代码如下:

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 = 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 
+1

当你尝试不同的'n'值时,你不需要重新初始化'a'吗? – Barmar

+0

也许这个公式并没有做你认为正在做的事情。你把a乘以1.5,然后加2,你做5次,然后把n增加到3.在那一点上,a已经大于100.我不认为'n'会使它一直到17。 – paddy

+0

谢谢巴尔玛。我想出了如何解决我的代码。 –

回答

0

如果你的公式是正确的,那么4是你应该期望的答案。第一个for循环运行一转进入respsective值:

17, 27, 42, 65, 99 

,然后变成N到3下一次运行一个转成:

151, 229, 346, 522, 786 

注意,一个是现在> 300,但是我们有再增加n次一次。因此n = 4.