1. 程式人生 > >Python函式之遞迴(用遞迴實現二分查詢)

Python函式之遞迴(用遞迴實現二分查詢)

遞迴:簡單來說就是引用(或者呼叫)自身的意思。

#階乘
def factorical(n):
    result=n
    for i in range(1,n):
        result *=i
    return result
print(factorical(12))


輸出:
479001600

程式碼實現二分查詢法:

#實現二分查詢法
def search(sequence, number, lower=0, upper=None):
    if upper is None: upper = len(sequence) - 1  #如果不加這兩句會出現‘TypeError: search() missing 2 required positional arguments: 'lower' and 'upper'’,這種錯誤
    if lower == upper:
        assert number == sequence[upper]
        return upper
    else:
        middle = (lower + upper) // 2
        if number > sequence[middle]:
            return search(sequence, number, middle + 1, upper)
        else:
            return search(sequence, number, lower, middle)


seq = [34, 67, 8, 123, 4, 100, 95]
seq.sort()
print(seq)
print(search(seq, 34))


輸出:
[4, 8, 34, 67, 95, 100, 123]
2