2017-02-23 99 views
0

我遇到了一个我的教授给我的问题。我不需要这个答案,我只需要一些事情就可以了。现在的问题是:了解while循环在MATLAB中

使用while循环寻找最小数N为其整数的和1通过N大于999

这里是我到目前为止,已经工作了几个小时,并找不到任何东西。

sum=0; 
while sum>999 
    sum=1+n 
    disp('sum is', sum) 
    disp('n=',n) 
end 
+2

我建议你暂停一下,花一些时间阅读Matlab编程。然后,请阅读['while while](https://www.mathworks.com/help/matlab/ref/while.html)上的文档并尝试这些示例。最后,考虑你的循环中'n'和'sum'需要如何改变。你也应该看看你的'while'条件,并理解如果'sum'被设置为'0'之前会发生什么。 – horchler

+2

请勿使用'sum'作为变量名称,因为它是[内置函数](http://mathworks.com/help/matlab/ref/sum.html)。如果你想在你的代码中使用* function *'sum',那么用你的变量掩盖这个问题会让你陷入麻烦。 – Adriaan

回答

1

您需要的时候sum_val > 999退出while循环。如果你看看你的退出条件,并把它读作的话,你可以看到你的问题:

while sum_val > 999是“循环并执行循环语句,而和的值大于999 更大”。

由于您的总和从0开始,你将永远不会进入你的循环,因为总和小于999你想:

“循环并执行循环语句,而和的值是比999"

它是:

while sum_val < 999 

除此之外,你不定义你的柜台n。你这样做:

sum_val=1+n 

当你算你的总数,你需要确保你实际上总结正确的事情。 sum是什么,sum的前一个值加上当前值n。所以这样做:

sum_val = sum_val + n 

还什么是n?以及在问题陈述中,n从1到N(您的最终目标)。所以你需要确保你更新(并设置它)。

n = 1 
... 
n = n+1 

最后,总和是一个函数名,所以你不能使用它。使用其他的东西,如上面所示的sum_val

您需要理清这些代码应该放在哪里。

+0

神奇的福克斯先生的回答是正确的。对于将来,我会推荐[调试](https://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html)这个问题。这样你就可以自己解决问题,而且很可能在更短的时间内解决问题。 – ganninu93