Pythonの学習日記(13)再帰関数とバイナリサーチアルゴリズム

再帰関数とは何ですか?

それは単に繰り返し呼び出し自体の機能の関数であり、

呼び出し時の再帰関数は再帰的な文句を言うでしょう回数をプログラムするオープンスペースやメモリの終わりまで続きます

再帰的に時間を計算します:

私は= 0
 デフFUNC():
     グローバルiが
     印刷' I = {} ' .format(I))
    、I + = 1
     戻りFUNC()
FUNC()#..... I = 994、I = 995 RecursionError:最大Pythonオブジェクトを呼び出し中に再帰の深さを超え

ここでは、我々は再帰の回数を変更します。

インポートのSYS 
は、sys.setrecursionlimit( 1000000 
I = 0
 デフFUNC():
     グローバルiが
     印刷' I = {} ' .format(I))
    、I + = 1
     戻りFUNC()
FUNC()      ... I = 3924 I = 3925

あなたはより多くの時間を再帰したい場合は、コンピュータのパフォーマンスを向上させる必要があります

再帰関数の利点は、簡単な質問をできるようにすることですが、欠点は、あまりにもメモリを占有している、ように再帰関数を再帰的に計算される大規模な問題を解決するには適していません

 

バイナリサーチアルゴリズム:

これは、クエリがリストでなければなりません命じリスト

DEF(= 0、終了=開始、目指し、L見つけるなし):
    エンド = lenは(L)場合には終わりがあるなし他のエンド
    mid_index =(エンドスタート)+ // 2を起動する
     場合は、開始<= 終了:
         もしリットル[mid_index < :目指し
             戻り検索(AIM、L = mid_index + 1、端=開始端)
         ELIFの L [mid_index]> 目指し
             戻り検索(開始、目指し、L =開始、終了= mid_index-1 戻りmid_indexを
     リターン 私は、この要素を見つけることができません!
印刷(検索([5,6,8,9,10,17,18,19,20] ,. 8)) 2

おすすめ

転載: www.cnblogs.com/Fantac/p/11388221.html