0

戻りの代わりに再帰を終了するために例外をスローするコードがどれだけ速く動作するかを確認する必要があります

return を含む私のコードは次のようになります。

    def factorial(self, n):
    if n==0:
        return 1
    else:
        return n* self.factorial(n-1)

レイズを使用したコード:

def factorial2(self, n):
    if n==0:
        raise Exc(1)
    else:
        return n* self.factorial2(n-1)

このように見える必要があるかどうか、値を取得するにはどうすればよいかわかりません。このように試してみました

try:
    print factorial2(n)
except Exc:
    1

しかし、うまくいきません。良い解決策に近づいているかどうかさえわかりません。

誰か助けてくれませんか、ヒントを教えてください。

4

1 に答える 1

2

この関数のelse部分でtry/exceptが必要です...外部でリッスンすると、すべての呼び出しで最終的にこの例外が発生するため、すべての作業が失われます

def factorial2(self, n):
    if n==0:
        raise Exc(1)
    else:
        try:
           return n* self.factorial2(n-1)
        except Exc:
           return n
于 2013-10-14T19:25:45.680 に答える