python之路 遞迴, 二分法

2022-09-01 21:39:17 字數 2319 閱讀 2144

自己呼叫自己, 遞迴的入口(引數)  和  出口(return),  樹形結構的遍歷.

def

func():

print("

我是遞迴")

func()

func()

樹形結構的遍歷

import

osdef func(lujing, n): #

"d:/a/"

lst = os.listdir(lujing) #

開啟資料夾. 列出該資料夾內的所有檔名

for el in lst: #

el是檔案的名字. b, c

#還原檔案路徑

path = os.path.join(lujing, el) #

"d:/a/b"

if os.path.isdir(path): #

判斷路徑是否是資料夾

print("

..." * n,el) #

顯示資料夾的名字

func(path, n + 1) #

在來一次 ################

else

:

print("

\t" * n,el) #

顯示檔案

func("

d:/a

", 0)

掐頭結尾取中間, 查詢效率非常的高

二分法查詢

lst = [1,3,5,7,12,36,68,79]

n = int(input("

請輸入乙個數"))

left =0

right = len(lst) - 1

while left <=right:

mid = (left + right)//2

if n >lst[mid]:

left = mid + 1

elif n right = mid - 1

else

:

print("存在"

)

break

else

:

print("

不存在")

用遞迴方法查詢(第一種)

def

func(n, lst):

left =0

right = len(lst) - 1

if lst !=:

mid = (left + right)//2

if n >lst[mid]:

func(n, lst[mid+1:]) #

改變列表

elif n func(n, lst[:mid])

else

:

print("

找到了"

)

return

else

:

print("

沒找到"

)

return

n = int(input("

請輸入你要查詢的數:"))

func(n, [1,3,5,7,12,36,68,79])

用遞迴方法查詢(第二種)

def func(n, lst, left, right): #

遞迴找到什麼是可以變的. 什麼是不可以變的

if left <=right:

mid = (left + right) // 2

if n >lst[mid]:

left = mid + 1

return

func(n, lst, left, right)

elif n right = mid - 1

return func(n, lst, left, right) #

遞迴如果有返回值. 所有呼叫遞迴的地方必須寫return

else

:

print("

找到了"

)

return mid #

難點else

:

print("

找不到"

)

return -1n = int(input("

請輸入你要查詢的數:"))

lst = [1,3,55,98,37,41,2,5,1,4]

ret = func(n, lst, 0, len(lst)-1)

print(ret)

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

python 遞迴與二分法

一 遞迴呼叫的定義 遞迴呼叫是函式巢狀呼叫的一種特殊形式,函式在呼叫時,直接或間接呼叫了自身,就是遞迴呼叫二 遞迴分為兩個階段 遞推,回溯 salary 5 salary 4 300 salary 4 salary 3 300 salary 3 salary 2 300 salary 2 salar...