2017-02-23 56 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