zoukankan      html  css  js  c++  java
  • Python递归

    什么是递归Recursion?

    〉 递归是一种解决问题的方法,其精髓是将问题分解为规模更小的相同问题,
    持续分解,直到问题规模小到可以用非常简单直接的方式来解决。
    〉 递归的问题分解方式非常独特,其算法方面的明显特征就是:在算法流程中
    调用自身。
    〉 递归为我们提供了一种对复杂问题的优雅解决方案,精妙的递归算法常会出
    奇简单,令人赞叹。

    递归“三定律”

     〉 为了向阿西莫夫的“机器人三定律”致敬,递归算法也总结出“三定律”

    1 ,递归算法必须有一个基本结束条件(最小规模问题的直接解决)
    2 ,递归算法必须能改变状态向基本结束条件演进(减小问题规模)
    3 ,递归算法必须调用自身(解决减小了规模的相同问题)

    列表求和:

    def sum_list(lst):
    	if len(lst) == 1:#终止条件
    		return lst[0]
    	return lst[0] + sum_list(lst[1:])#减小规模并调用自身
    
    
    if __name__ == '__main__':
    	lst = [1, 2, 3, 4, 5]
    	print(sum_list(lst))

    列表反转:

    def reverse_str(str):
    	if str == "":
    		return str
    	return reverse_str(str[1:]) + str[0]

    回文词判断:

    def check(str):
    	if str == "" or len(str) == 1:
    		return True
    	return str[0] == str[len(str) - 1] and check(str[1:len(str) - 1])

    进制转换:

    def convertToStr(n, base):
    	string = "0123456789ABCDEF"
    	if n < base:
    		return string[n]
    	return convertToStr(n // base, base) + convertToStr(n % base, base)
    
  • 相关阅读:
    CodeForces 1025G Company Acquisitions
    Luogu P4271 [USACO18FEB]New Barns P
    Luogu P1625 求和
    SP1772 Find The Determinant II
    CodeForces 1408G Clusterization Counting
    CodeForces 1420E Battle Lemmings
    设计模式——工厂模式
    设计模式——适配器模式
    rabbitMQ centos7 的安装
    dubbo spring 的使用
  • 原文地址:https://www.cnblogs.com/jasonhaven/p/7617619.html
Copyright © 2011-2022 走看看