VI。再帰関数

ウェッジ

今日の内容の話をする前に、のはそれが何であるかについての話を聞かせて?山はかつてあった、山の寺院は寺院が、それが何であるかについて話して、物語を伝える老僧があり、そこでしたか?山はかつてあった、山の寺院は寺院が、それが何であるかについて話して、物語を伝える老僧があり、そこでしたか?山はかつてあった、山の寺院は寺院が、それが何であるかについて話して、物語を伝える老僧があり、そこでしたか?山はかつてあった、寺があった山は、寺は......私は一日に話すことができ、物語をあなたがこの物語の停止を命じていないものについて話して老僧を持っています!私たちは、人生の例は、プログラムのように書くことができることを言って、ちょうどこの物語は、あなたがそれを書くか、あなたが書いてみましょうか?

トゥルーしばらく:
    ストーリー=「
    山はかつてありました、山寺は物語を伝える寺院老僧が、ありました、
    の何を話すのか?    
    を印刷(ストーリー)

あなたは間違いなくそう書き込まれるように持っているが、今は機能を学んだし、どのような関数呼び出しに入るべきことは実行されます。だから、確かに私が書いた、と言うでしょう:

コードをコピー
ストーリーDEF():
    S =「」「
    山の寺院、物語を伝える寺院老僧、あった、かつて山がありました
    ?それが何であるかについて話を」
    「」
    印刷(S)
    
しばらくトゥルー:
    ストーリー()
コードをコピー

しかし、私たちは、私が書く方法を見てみ!

コードをコピー
ストーリーDEF():
    S =「」「
    山はかつてありました、山寺があった、寺老僧が物語を、
    ?何を話すかは」
    「」
    印刷(S)
    ストーリー()
    
ストーリー()
コードをコピー

かかわらず、最終的な第一の誤差関数の、エラーに加えて、我々はそれを見ることができ、コードとコードの上記効果の実装のこの部分は同じです。

再帰知人

再帰定義- 関数内で、その後は、この関数自体を呼び出します

今、私たちはおそらく機能が何について話して物語が、知っていることを、この関数自体を呼び出す、関数にして、機能を使用するには、この魔法の方法が呼び出される再帰的に

私たちは、単純な再帰関数を記述する必要がありました。

再帰の最大の深さ--997

あなただけ見てきたように外力が実装されていない場合は、再帰関数がブロックされています。私たちは、関数呼び出しについての質問の前に言ったようしかし、すべての関数呼び出しがために、この現象のpythonを停止するので、あまりにも多くのメモリの問題を取り上げるの名前空間を作成し、あなたはそれを呼び出すようになっている場合は、独自の名前のスペースを持っています、でコントロールの再帰的な層を余儀なく997(限り!あなたが不利益を購入することはできません997として、...だまされて購入しません)。

この「理論上997」は意味あることを証明することは何ですか?ここでは、実験を行うことができます。

DEF FOO(N):
    プリント(N)
    N + = 1つ
    のfoo(N)
FOO(1)

このことから、我々は最大数はもちろん997で見ることはできません与えられる前に、997のデフォルト値がセットの私達のメモリを最適化するためのpythonプログラムである、ことを確認することができ、もちろん、我々はまた、いくつかの手段でそれを変更することができます:

輸入SYSの
印刷(は、sys.setrecursionlimit(100000))

私たちは、コンピュータの実際の性能に依存して実現することができる深さとして私たちは、Pythonの再帰の深さは10ワットに設定されていることができます、このように再帰の最大の深さを変更することができます。しかし、我々はまだ再帰層997との問題は解決しないのいずれかを使用再帰はどちらかあなたがコードを書く吸う解決するためには適していませんない場合ので、このデフォルトの再帰の深さを変更することはお勧めしません~~~

真簡単にそれを使用しながら、それが優れている、あなたも良いことではありませんどのような再帰を見つけることがあり、ここを参照してください!しかし、このスプレッドは、川や湖にと呼ばれるこの言葉:人々はサイクルを理解し、神は、再帰を理解しています。あなたは再帰関数を過小評価することはできませんので、多くの人々は非常に多くの年の偉大な神のしきい値外に停止している、それは再帰の本当の意味を理解することができることはありません。そして、我々は多くのアルゴリズムと再帰的な関係を検討します。さあ、私は唯一の資本を軽蔑することを学びました!

再帰についての講演

ここでは、再帰を行うことができます説明するための例を与える必要があります。

例1:

今、あなたは、アレックスの先生何歳私に尋ねますか?私は、私はあなたを教えていないと述べたが、エゴンよりアレックス2歳年上。

あなたが依頼する必要がどのくらいかを知りたいアレックスはエゴンではないでしょうか?エゴンは、私は、先生があなたに教えていないが、私は2歳年上争う、と言います。

あなたは彼がJinxinより2歳年上だったと述べ、呉先生、呉はあなたに言っていない先生に尋ねました。

その後、ジン新は、彼が40ということを教えてくれ、ジン新をお願いします。

あなたが知っているされていないこの時間?アレックスくらい?

1 Jinxin   40
2 呉先生   42
3 そこ   44
4 アレックス    46

なぜあなたは知っていることができますか?

まず第一に、あなたはアレックスの年齢を求めていない、結果はエゴン、呉先生、ジン新、彼らは最後のアレックスを取得する前に、この線に沿ってそれを取り戻す、決定的な答えを得るためにあなたの子供となっている過去の一つ一つを尋ねるを見つけました年齢の。このプロセスは、再帰の考え方に非常に近くなっています。私たちは、これらの人々の間で具体的な、法律を分析する私に来ます。

年齢(4)=年齢(3)+ 2 
歳(3)=年齢(2)+ 2 
歳(2)=年齢(1)+ 2 
歳(1)= 40

このような状況の下で、我々はそれを書く方法の関数であるべきということ?

コードをコピー
DEF年齢(N):
    N == 1は、場合:
        40戻り
    他:
        戻り年齢(N-1)+2 

プリント(年齢(4))
コードをコピー

 

再帰関数と3レベルのメニュー

コードをコピー
MENU = { 
    '北京' { 
        '海淀' { 
            '五道口' { 
                'SOHO':{}、
                '網易':{}、
                'Googleの:{} 
            }、
            '中関'{ 
                'iQIYI' :{}、
                '車の家':{}、
                'Youkuの':{} 
            }、
            '地面に':{ 
                'Baiduの':{} 
            } 
        }、
        '昌平':{ 
            '川':{ 
                "歳の少年「:{}、
                '北':{} 
            }、
            "Tiantongyuan ':{}、 
            ' huilongguan「:{}、 
        }、
        "太陽":{}、 
        'ワーイーストサイド':{} 
    }、
    '上海':{ 
        '閔行":{ 
            "人民広場「:{ 
                'フライドチキン':{} 
            } 
        }、
        '閘北':{ 
            '電車戦争'{ 
                'チェン':{} 
            } 
        } 
        '浦東':{} 
    }、
    '山東「:{} 
}
コードをコピー
コードをコピー
:1デフthreeLM(DIC)
 :2真一方
 DICにおけるk 3:プリント(K)
 。4キー=入力( '入力>>')ストリップ()
 5キー== 'B'またはキー==「Qもし「:キーを返す
 (dic.keys 6 ELIFキー)およびDIC [キー]:
 7 RET = threeLM(DIC [キー])
 RET場合8 == 'Q':リターン'Q' 

9 
10 threeLM(メニュー)
コードをコピー

書面による事前の3つのメニューがそれを仕事覚えていますか?今、私たちはについて書いて再帰を使用して -

コードをコピー
L = [MENU] 
一方、L:
    リットルでキー[-1]のために:プリント(キー)
    。K =入力( '入力>>')ストリップ()#北京
    場合のLにおけるk [-1] .keys()とL [-1] [K]:l.append(L [-1] [K])
    ELIFのK == 'B':l.pop()
    ELIFのK == 'Q':休憩
コードをコピー

 

再帰関数とバイナリサーチアルゴリズム

http://www.cnblogs.com/Eva-J/articles/7197403.html

おすすめ

転載: www.cnblogs.com/Rivend/p/11595488.html