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)

このコードが無限ループになるのはなぜですか?

EDIT: 無限ループになる理由がわかりました。これは変更されたコードです。内部関数定義内でreturnステートメントを使用するのを忘れています

    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

1 に答える 1

2

どちらbxループ内で変更されないため、比較結果は決して変化しません。

于 2012-11-04T04:24:33.427 に答える