0

関数a呼び出し関数bTrueまたはFalseに戻るa)があり、その後、関数aは結果を返して印刷することができます。

class C:
    ...

    def a(self, data):

        p = self.head
        return self.b( p,data)

    def b(self, p, data):

        current = p
        if current.data == data:
            return True
        else:
            return False


if __name__=="__main__":  

    x = C()
    print(x.a(1))

意図されていても、Noneを返す場合がありますTrue。何が起こったのかわかりませんか?

4

1 に答える 1

8

実際のコードを見ずに言うことは不可能です。returnおそらくその理由は、ステートメントを実行しない関数を通るコードパスです。コードがそのパスをたどると、関数は値を返さずに終了するため、を返しますNone

更新:コードは次のようになります:

def b(self, p, data): 
    current = p 
    if current.data == data: 
        return True 
    elif current.data == 1:
        return False 
    else: 
        self.b(current.next, data)

そのelse節があなたのNone道です。再帰呼び出しが返す値を返す必要があります。

    else:
        return self.b(current.next, data)

ところで:このような反復プログラムに再帰を使用することは、Pythonではお勧めできません。代わりに反復を使用してください。また、明確な終了条件はありません。

于 2013-03-24T22:00:18.420 に答える