這兩個程式雖然看起來很相似,但實際上有關鍵的邏輯差異,主要在於 return True
的位置,這直接影響了程式的執行流程:
第一個程式:
def check(t):
for i in range(1, len(t)):
if t[i-1] == t[i]:
return False
return True
說明:
這個版本會逐一檢查陣列
t
中相鄰的元素。如果發現相鄰兩個元素相等(
t[i-1] == t[i]
),則立即返回False
,表示陣列內有重複元素。如果遍歷完所有的相鄰元素都沒有相等的情況發生,那麼在迴圈結束後才返回
True
,表示陣列沒有重複元素。
效果:
這個程式會完整遍歷陣列,直到找到一對相同的相鄰元素,或是直到檢查完所有元素。如果沒有發現相同的相鄰元素,才會返回 True
。
第二個程式:
def check(t): for i in range(1, len(t)): if t[i-1] == t[i]: return False return True
說明:
在這個版本中,一旦進入迴圈,無論第一組相鄰元素是否相等,程式都會在檢查第一組相鄰元素後立即返回結果。
如果第一組相鄰元素相等,會返回
False
。如果第一組相鄰元素不相等,程式會直接返回
True
,不再檢查後面的元素。
效果:
這個程式只檢查了陣列的第一組相鄰元素後就會結束,所以即使後面的元素有相同的相鄰值,這個版本也無法檢查到。
結論:
第一個版本 遍歷整個陣列,相鄰元素不相等才會返回 True
| 完整檢查所有相鄰元素 |
第二個版本 只檢查第一組相鄰元素後就結束 | 只檢查第一組相鄰元素 |
第一個版本是正確的邏輯,能夠檢查整個陣列是否有重複相鄰元素。而第二個版本則僅檢查了第一對元素,並沒有達到完整檢查的效果。
沒有留言:
張貼留言