關于if的位置不同結果不同
我將if分別放在前面和后面 得出sum的結果是不一樣的,我猜應該是不一樣的, 但是不理解為什么。?
當if在放在前面, n大于20了, 就直接退出循環了 這個可以理解, 但是當if放在后面,按照我的理解是n大于20后應該也不循環了,為什么結果會不一樣呢?難道把n等于21也算進去了?
謝謝解答
我將if分別放在前面和后面 得出sum的結果是不一樣的,我猜應該是不一樣的, 但是不理解為什么。?
當if在放在前面, n大于20了, 就直接退出循環了 這個可以理解, 但是當if放在后面,按照我的理解是n大于20后應該也不循環了,為什么結果會不一樣呢?難道把n等于21也算進去了?
謝謝解答
2018-07-28
舉報
2018-07-30
因為程序是按代碼的順序來的 ?如果你放后面的你話 他會先執行前面的代碼 就是說
當上次循環執行,if n > 20: ? 時因為n=20 ,所以條件成立程序還會在循環執行一次
sum += x ? ?
? ? x *= 2
? ? n += 1 ? ? #到這n已經等于21了,所以說這個程序實際是執行了21次,而不是20次。
?if n > 20: ? ? # 如果你想放在后面 吧這個條件改成 n=20就行啦
2018-08-02
if 位置不同結果是相同的呀,但是sum=sum+x 位置不同結果就不一樣了,比如這樣:
while True:
? ? x = x * 2
? ? n = n + 1
? ? sum = sum + x
? ? if n > 20:
? ? ? ? break
就會發生n=21但是還沒到break 語句打破循環,所以再計算一次才會退出循環。
2018-07-30
if放在前面 n大于20了 直接退出循環,相比于放在后面,就少執行一次求和,結果就不一樣了呀
2018-07-28
這個應該和n的初始值有關吧