码迷,mamicode.com
首页 > 编程语言 > 详细

Python实现:函数的递归(示例)

时间:2018-09-02 23:50:58      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:求和   排序   end   print   相等   type   highlight   start   quick   

#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实现:函数的递归(示例)

标签:求和   排序   end   print   相等   type   highlight   start   quick   

原文地址:https://www.cnblogs.com/xinin0909/p/9575666.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!