2016-11-19 7 views
0

私は一般的にOOPやPythonを初めて習得しており、以下のコードの理解には問題があります。これは、HackeRankの問題で使用されます。私はその宣言の中でどのようにチェックが使われているのかわかりません。ブール値を返すことになっています。宣言内の関数を呼び出す

def check(root,mini,maxi): 
     return(root==None or 
     (check(root.left,mini,root.data) and 
     check(root.right,root.data,maxi))) 
+2

これは再帰と呼ばれています。 https://en.wikipedia.org/wiki/Recursion_(computer_science) –

+2

あなたが探している検索用語は「再帰」です。それについて読んでみよう。 – user2357112

答えて

0

自体内の関数は、関数が以前にcall.This再帰を実行している、それは再びそれに自分自身を呼び出し自体の中に呼び出されrecursion.Whenと呼ばれる使用して、各関数呼び出しのスタックおよび完了の各再帰関数呼び出しをプッシュスタックの上にある関数呼び出しのポップが発生し、関数の最後の呼び出しになります。したがって、それ自身の内部で呼び掛けチェックが呼び出されると、チェックする別の呼び出しをアクティブにし、この2回目の呼び出しによって返された値が呼び出された呼び出しで使用されます。プログラムの条件に応じて何回も発生する可能性があります。私はこれが役立つことを願っていますまたは、再帰について読むことができます。

1

@ helptakerの説明を再帰的に見ることができます。この場合、関数が空でない限り、関数はデータの左右の半分をチェックすると仮定しています。その後、それらの再帰呼び出しの結果を受け取り、それらを結合します。

したがって、あなたの例では、root==Noneとなるでしょう。これはおそらくデータが十分に小さくなったときです。さもなければ、この関数は2つのより小さいサイズの問題でそれ自身を呼び出すでしょう。これらの2つの再帰呼び出しは結果を返し、関数はその結果に基づいて戻り値を決定します。

結論として、この機能では、問題をより小さな部分に分割し、それぞれを解決して結果を組み合わせます。あなたがGoogleで "再帰" を検索した場合(、それも「表示されます

:ここ

は、再帰のいくつかのリソースですあなたはどういう意味ですか:recursio n "を例として)

関連する問題