1. 程式人生 > >Python實現:函數的遞歸(示例)

Python實現:函數的遞歸(示例)

style 返回 找到 art python實現 個數 clas star 數字

#1,用遞歸實現計算函數的階乘
def myfac(n): #用循環實現 s= 1 for i in range(1,n+1): s*=i print(s) myfac(5) def myfac(n): #用循環實現 if n==1: return 1 return n*myfac(n-1) print(myfac(5))

#2,用遞歸實現求和:
 def mysum(n):
    #返回1+2+3+4+5+n的和
print(mysum(100))#5050
def  mysum(n):
    if n==1:
        return 1
    return n+mysum(n-1)
print(mysum(100))

3.已知有列表
L=[[3,5,8],10,[[13,14,],15,18],20]
寫一個函數print_list(lst)打印出所有的數字
寫一個函數 sum_list(lst)返回列表中所有數字
的和
註:
type(x)函數可以返回一個對象的類型
>>>type(20) is int #True
type([3,5,8]) is list #True

def print_list(lst):
    # l=[]
    for x in lst:
        if type(x) is int:
            # print_list(x)
            print(x)
        else:
            print_list(x)
            # print(x)
def sum_list(lst):
    sum=0
    for x in lst:
        if type(x) is list:
            sum+=sum_list(x)
        else:
            sum+=x
    return sum

L=[[3,5,8],10,[[13,14,],15,18],20]
print_list(L)
print(sum_list(L))

4,用遞歸的方法實現快速排序

def QuickSort(myList,start,end):
    if start < end:
        i,j = start,end
        #設置基準數
        base = myList[i]
        while i < j:
            #如果列表後邊的數,比基準數大或相等,則前移一位直到有比基準數小的數出現
            while (i < j) and (myList[j] >= base):
                j = j - 1

            #如找到,則把第j個元素賦值給第個元素i,此時表中i,j個元素相等
            myList[i] = myList[j]

            #同樣的方式比較前半區
            while (i < j) and (myList[i] <= base):
                i = i + 1
            myList[j] = myList[i]
        #做完第一輪比較之後,列表被分成了兩個半區,並且i=j,需要將這個數設置回base
        myList[i] = base
        #遞歸前後半區
        QuickSort(myList, start, i - 1)
        QuickSort(myList, j + 1, end)
    return myList


myList = [49,38,65,97,76,13,27,49]
print("Quick Sort: ")
QuickSort(myList,0,len(myList)-1)
print(myList)

 

Python實現:函數的遞歸(示例)