Pythonの再帰とバイナリ検索

 1.再帰:

    自身の曲、自分の難しさ:悪いと思うが、良い読み取り法を見つける必要があります

 2.二分法

    ヘッドエンドは、左右常に変化し、真ん中を取る、間接的な中間の変更、クエリ効率が非常に高く、





1.再帰的(方法:)
再帰的使用:ツリー構造をトラバース(データはツリー構造であり、トラバースを取り、トラバース中に得られた二つの結果、... 4つの結果が得られた)
インポートOS 
filePathには = D:/タイトルなし

IT = os.listdir(filePathに)        フォルダ内のファイルを表示、
#の印刷(IT)のリストの形で#印刷

印刷__iter__   DIR(IT))    反復、反復可能かのリストは、Trueを返すかどうかを判断します
以下のための I :IT
     印刷(I)      ないリストの形で直接印刷、





インポートOS 
filePathに = " D:/無題" 

DEF読む(filePathに、N-):
    ITは os.listdir(filePathに)=        #のLISTDIRビュー(開く)ファイルフォルダ
    印刷( "__ iter__"ディレクトリ内(IT))#はイテラブル
    #の印刷(DIRで"__ next__"(IT))はイテレータではありません
    以下のための I :IT
         のiF:os.path.isdir(os.path.join(filePathに、I))          isdirはフォルダos.path.joinが固定かどうかを決定する文言(スプライシング)
            印刷" \ T "、* N- I)      印刷フォルダ、
            #の印刷(I) 
            この関数が再び呼び出される
            読む(I) 
            リード(os.path.join(filePathに、I)、N- + 1)  +に(元のパスをパスを取得しますファイル)は、新たな経路を形成する層を追加し

        、他#を通常ファイル、いないのフォルダ
            を印刷\ tは *、I N-)         #1 の終了再帰的、再帰的に一度、Nと判断された再帰回数

読む(filePathに、0)
説明:
#は、フォルダを開いて置くことです、別のフォルダの登場場合は、ファイルかどうかを判断して、ステッチ、新しいパスが表示されます
#を使用すると、その後、内容を印刷、ファイルの出現までステッチを続け、その後、フォルダまたはファイルを開いた場合。
一般的な再帰的な方法
 
 

 2.再帰(方法II :)

インポートOS 
filePathに = " D:/無題" 
DEF読む(filePathに、N-):      n型再帰深度 
    ITはos.listdir(filePathに)=        フォルダ内LISTDIRビュー(開く)
        #1 (DIRに"__ iter__"印刷( IT))#のイテラブル
    のための I における IT:    オープンレイヤ
        #1 のgetパス 
            FPがos.path.join(filePathに、I)=   #のスプライシングを
            した場合 os.path.isdir(FP):       は、フォルダかどうかを決定します
                印刷" \のT " * N-、I)
                読む(FP、N- + +1)        #はフォルダで、内部の再帰的な入り口の内容の読み取りを継続し
            、他を印刷\ tの * N-、ⅰ)        再帰輸出

読む(filePathに、 1)
ツリーのトラバース

 

 

 3.バイナリ検索

方法:(一般的方法) 
LST = [11,22,33,44,55,66,77,88,99]       //床以外 
のn-66 =  = 0  = LEN(LST) - 1つの。         長さ--1インデックス= 
。COUNT 1 = しばらくは左<= 右:
    中央 =(左+右)// 2
     IF N-> LST [ミドル]: =ミドル+ 1。
     ELIF N- < LST [ミドル]: =ミドル--1
     印刷(COUNT)
         を印刷" プレゼンス" 
印刷(中)                中東中間インデックスがある
        BREAKの
    COUNT = COUNTの+ 1。
 印刷" 存在しない" 





方法2:(再帰的二分) 
LST = [11,22,33,44,55,66,77、 88,99 ] 

DEFの:(右、N-左)binary_search 
    中央 =(左+右)// 2
     IF左> 右:
         印刷" なし" を返す -1    #が返されない-1 
    のIF N-> LST [中東]: =中東+ 1。
    elifの N- < LST [中]: =中東- 1。
     返す中東    #をはい、入力のインデックス値を返す
    リターン binary_search(左、右、N-)  N-表しあなたは価値判断の入力された指標値
印刷を(binary_search(0、LEN(LST )-1,65))
コードの表示

 

 

 

 







おすすめ

転載: www.cnblogs.com/Pengdachui-1/p/11619444.html