0

誰でもこのコードが返される理由を教えてくださいRuntimeError: maximum recursion depth exceeded:

def maximum(tab, indDeb, indFin):
    if (indDeb == indFin):
        return indDeb
    else:
        m = (indDeb + indFin) / 2
        print "m = ", m
        k1 = maximum(tab, indDeb, indFin)
        k2 = maximum(tab, m+1, indFin)
        if (tab[k1] > tab[k2]):
            return k1
        else:
            return k2

if __name__ == "__main__":
    maximum([1, 2, 3, 4, 5], 0, 4)
4

2 に答える 2

6

内部でmaximumは、引数を変更せずに関数を再帰的に呼び出しています。

def maximum(tab, indDeb, indFin):
    # ...

    k1 = maximum(tab, indDeb, indFin)

これは、無限再帰につながるしかありません。

おそらく、上限のインデックスを制限したいでしょう:

k1 = maximum(tab, indDeb, m)
于 2013-10-03T00:09:10.523 に答える
5

この線:

k1 = maximum(tab, indDeb, indFin)

次のようにする必要があります。

k1 = maximum(tab, indDeb, m)
于 2013-10-03T00:09:54.083 に答える