2012-11-04 74 views
0

我是python的新手。當我試圖編寫簡單的代碼時,我遇到了一個我無法理解的奇怪問題。以下是密碼爲什麼我的代碼導致無限循環?

def myLog(x, b): 
    temp = b 
    def mylog(x,b): 
     while b <= x : 
      mylog(x,b*temp) 
     return b/temp - 1 
    return mylog(x,b) 
myLog(16,2) 

爲什麼此代碼導致無限循環?

編輯: 我發現它導致無限循環的原因。這是修改後的代碼。我忘了使用回報語句內函數定義內部

def myLog(x, b): 
     temp = b 
     def mylog(x,b): 
      while b <= x : 
        return mylog(x,b*temp) 
      return b/temp - 1 
     return mylog(x,b) 

myLog(16,2)

+4

高興讓代碼正確縮進。現在,這是行不通的。 Python對空白敏感。 –

+1

爲什麼這是自昨天以來第20個關於使用while循環查找日誌的帖子? – JBernardo

+1

無限循環看起來像是因爲你永遠不會改變'mylog'中b的值。 –

回答

2

無論b也不x在循環被修改,所以比較結果永遠不會改變。

+0

值沒有改變,但我通過改變的值作爲參數=> myLog(x,b * temp) – udi

相關問題