2024年10月13日 星期日

return True 的位置

 這兩個程式雖然看起來很相似,但實際上有關鍵的邏輯差異,主要在於 return True 的位置,這直接影響了程式的執行流程:

第一個程式:

def check(t):
    for i in range(1, len(t)):
        if t[i-1] == t[i]:
            return False
    return True

說明:

  1. 這個版本會逐一檢查陣列 t 中相鄰的元素。

  2. 如果發現相鄰兩個元素相等(t[i-1] == t[i]),則立即返回 False,表示陣列內有重複元素。

  3. 如果遍歷完所有的相鄰元素都沒有相等的情況發生,那麼在迴圈結束後才返回 True,表示陣列沒有重複元素。

效果:

這個程式會完整遍歷陣列,直到找到一對相同的相鄰元素,或是直到檢查完所有元素。如果沒有發現相同的相鄰元素,才會返回 True


第二個程式:

def check(t):
    for i in range(1, len(t)):
        if t[i-1] == t[i]:
            return False
        return True說明:
  1. 在這個版本中,一旦進入迴圈,無論第一組相鄰元素是否相等,程式都會在檢查第一組相鄰元素後立即返回結果。

  2. 如果第一組相鄰元素相等,會返回 False

  3. 如果第一組相鄰元素不相等,程式會直接返回 True,不再檢查後面的元素。

效果:

這個程式只檢查了陣列的第一組相鄰元素後就會結束,所以即使後面的元素有相同的相鄰值,這個版本也無法檢查到。


結論:

第一個版本 遍歷整個陣列,相鄰元素不相等才會返回 True | 完整檢查所有相鄰元素 |

第二個版本 只檢查第一組相鄰元素後就結束 | 只檢查第一組相鄰元素 |

第一個版本是正確的邏輯,能夠檢查整個陣列是否有重複相鄰元素。而第二個版本則僅檢查了第一對元素,並沒有達到完整檢查的效果。

沒有留言:

張貼留言