zoukankan      html  css  js  c++  java
  • Python实现:函数的递归(示例)

    #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)
    
    
    
    
     
  • 相关阅读:
    [zz]利用__FILE__, __LINE__, __FUNCTION__跟踪调试程序
    [zz]va_start() 和 va_end()函数应用
    [zz]shmdt与shmctl的区别
    [zz]GNU C 扩展之__attribute__ 机制简介 [2]
    Linux errno 错误含义速查
    过滤器的简介
    MyBatis中的原理
    文件上传
    mybatis实体为什么要提供一个无参的构造函数
    为什么要有无参构造方法
  • 原文地址:https://www.cnblogs.com/xinin0909/p/9575666.html
Copyright © 2011-2022 走看看