python 遞迴與 二分查詢

2022-09-05 13:09:11 字數 2524 閱讀 9237

# *************************====       遞迴 與  演算法

#遞迴# n = 1 金老闆 38+2 =40

# n = 2 alex n+2= 金老闆 36+2 = 38

# n = 3 wusir n+2 = alex wusir 36

# def age(n): #n = 2

# if n == 3:

# return 36

# else:

# return age(n+1)+2

## jin_age = age(1) # 40

# print(jin_age)

# 求階乘 _ 遞迴函式

# 5! = 5*4*3*2*1 # 5 * 4! fn(5)

# 4! = 4*3*2*1 # 4 * 3! fn(4)

# 3 * 2! fn(3)

# 2 *1! fn(2)

# 1 fn(1) = 1

# def fn(n): #n=5

# if n == 1:return 1

# return fn(n-1) * n

# print(fn(5))

#演算法# 演算法 計算的方法

# 99*99 = 99*(100-1) = 99*100-99*1 = 99*100-99 = 9900-99 = 9801 _ 人計算的方法

# 99 * 99

# 計算機的思維和人腦的思維是不同的

# 演算法很難

# 計算機領域的 演算法 是計算機認為簡便的演算法

# 查詢演算法

# l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]

# 66

# 方法一: 迴圈 # 5000000 4999999

# 方法二: l.index(66) #最正確的方法

# 演算法

# 從有序的列表中查詢值的位置

# [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]

# 41 < 66

# [42,43,55,56,66,67,69,72,76,82,83,88]

# 66 < 67

# [42,43,55,56,66]

# 55 < 66

# [56,66]

# 56 < 66

# [66]

# 66 == 66

# 遞迴 : 解決乙個問題,問題的答案,依託於另乙個問題,另外的這個問題和要解決的問題是基本一致的

# l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]

# def find(l,aim):

# mid = len(l)//2

# if l[mid] > aim:

# new_l = l[:mid]

# find(new_l,aim)

# elif l[mid] < aim:

# new_l = l[mid+1:]

# find(new_l, aim)

# elif l[mid] == aim:

# print('找到了:',mid,aim,l[mid])

# find(l,66)

# 完整詳細的 二分查詢

# def find(l,aim,start=0,end=none):

# if end == none:end = len(l)-1

# if start <= end:

# mid = (end - start) // 2 + start

# if l[mid] > aim:

# return find(l,aim,start=start,end=mid-1)

# elif l[mid] < aim:

# return find(l,aim,start=mid+1,end=end)

# elif l[mid] == aim:

# return mid

# else:

# return none

# l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]

# print('ret :',find(l,18))

# 1 如果要查詢的值不在列表中

# 2 引數的簡化

# 3 返回值的問題

python遞迴查詢 python 遞迴,二分查詢

print list 胡辣湯 lst 河南話 四川話 東北 山東 上海 r reversed lst print list r huiwen 不是上海自來水來自海上 s huiwen 1 it reversed huiwen 返回的是迭代器 s for el in it s el print s l...

二分查詢與遞迴式二分查詢

二分查詢 public class binarysearch arrays.sort arr todo auto generated method stub int low 0 int high arr.length 1 while low high elseelse 遞迴實現二分查詢 public...

Python實現二分查詢(遞迴與非遞迴)

二分查詢 每次能夠排除掉一半的資料,查詢的效率非常高,但是侷限性比較大。必須是有序序列才可以使用二分查詢。1.非遞迴演算法 def binary search lis,nun left 0 right len lis 1 while left right 迴圈條件 mid left right 2 ...