1. 程式人生 > >day_06、遞歸、二分查找

day_06、遞歸、二分查找

條件 PE one end lse pytho pre IE ide

遞歸

遞歸意味著調用自身。

遞歸函數通常包括以下倆部分。

基線條件:(針對最小的問題)滿足這個條件是將直接返回一個值。

遞歸條件:包含一個或多個調用,這些調用旨在解決問題的一部分。

技術分享圖片
1 def fun(n):
2     if n == 1:
3         return 1
4     else:
5         return n * fun(n-1)
乘階 技術分享圖片
1 def fun(n, x):
2     if x == 0:
3         return 1
4     else:
5         return n * fun(n, x-1)
技術分享圖片
1 def fun(n):
2 if n == 1: 3 return 1 4 else: 5 return 2 * fun(n-1) + 1
漢諾塔

遞歸最大層數998.

修改遞歸層數。

import sys
print(sys.setrecursionlimit(100000))

二分查找

l1 = [1, 2, 4, 5, 7, 9]
def two_search(l,aim,start=0,end=None):
    end = len(l)-1 if end is None else end
    mid_index = (end - start) // 2 + start
    if end >= start:
        if aim > l[mid_index]:
            return two_search(l,aim,start=mid_index+1,end=end)

        elif aim < l[mid_index]:
            return two_search(l,aim,start=start,end=mid_index-1)

        elif aim == l[mid_index]:
            return mid_index
        else:
            return ‘沒有此值‘
    else:
        return ‘沒有此值‘
print(two_search(l1,9))

  

day_06、遞歸、二分查找