自己呼叫自己, 遞迴的入口(引數) 和 出口(return), 樹形結構的遍歷.
deffunc():
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("
不存在")
用遞迴方法查詢(第一種)
deffunc(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...