python實現遞歸斐波那契數列、進制轉換、排序

python實現遞歸斐波那契數列、進制轉換

遞歸結束條件:

  1. 遞歸算法必須有個基本結束條件
  2. 遞歸算法必須改變自己的狀態並向基本結束條件演進
  3. 遞歸算法必須遞歸地調用自身
def fibo(n):
    if n<=1:  #結束條件
        return n
    return fibo(n-1)+fibo(n-2)  #調用自己
print(fibo(8))



def to_str(n, base):
    convert_string = "0123456789ABCDEF"
    if n < base:
        return convert_string[n]
    else:
        return to_str(n//base, base) + convert_string[n % base]
print(to_str(1453,5))

#動態規劃
def recMC(coinValueList,change):
    minCoins = change
    if change in coinValueList:
        return 1
    else:
        for i in [c for c in coinValueList if c <= change]:
            numCoins = 1 + recMC(coinValueList,change-i)
            if numCoins < minCoins:
                minCoins = numCoins
    return minCoins

print(recMC([1,5,10,25],63))

選擇排序算法

def selectionSort(alist):
    for fillslot in range(len(alist)-1,0,-1):
        positionOfMax=0
        for location in range(1,fillslot+1):
            if alist[location]>alist[positionOfMax]:
                positionOfMax = location
            temp = alist[fillslot]
            alist[fillslot] = alist[positionOfMax]
            alist[positionOfMax] = temp
    return alist
alist = [54,26,93,17,77,31,44,55,20]
print(alist)
print(selectionSort(alist))

冒泡排序

def bubbleSort(alist):
    for passnum in range(len(alist)-1,0,-1):
        for i in range(passnum):
            if alist[i]>alist[i+1]:
                temp = alist[i]
                alist[i] = alist[i+1]
                alist[i+1] = temp
alist = [54,26,99,17,77,31,44,55,20]
bubbleSort(alist)
print(alist)

插入排序

def insertionSort(alist):
    for index in range(1,len(alist)):
        currentvalue = alist[index]
        position = index
        while position>0 and alist[position-1]>currentvalue:
            alist[position]=alist[position-1]
            position = position-1
            alist[position]=currentvalue
    return alist
alist = [54,26,93,17,77,31,44,55,20]
print(insertionSort(alist))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章