• 函数递归


    什么是函数递归:

    函数递归调用(是一种特殊的嵌套调用):在调用一个函数的过程中,又直接或间接地调用了该函数本身

    递归必须要有两个明确的阶段:

      递推:一层一层的递归调用下去,强调每进入下一层递归问题的规模都必须减小

      回溯:递归必须要有一个明确的结束条件,在满足该条件时结束递推

         开始一层一层回溯

        递归的精髓在于通过不断地重复逼近一个最终的结果

    如何使用递归:

    def foo(n):
        print('from foo',n)
        foo(n+1)
    foo(0)
    #默认会在接近1000次时报错



    def bar():
    print('from bar')
    foo()

    def foo():
    print('from foo')
    bar()

    foo()
    #默认会在接近1000次时报错
    使用递归计算年龄:
    # age(5) = age(4) + 2
    # age(4) = age(3) + 2
    # age(3) = age(2) + 2                  #每个人和上一个人年龄差2岁
    # age(2) = age(1) + 2
    # age(1) = 26

    # age(n) = age(n-1) + 2 #n > 1
    # age(1) = 26 #n = 1

    def
    age(n): if n == 1: return 26 return age(n-1) + 2 print(age(5))
    #使用递归的方法取出下列列表中的每一个值
    l=[1,[2,[3,[4,[5,[6,[7,[8,[9,]]]]]]]]] def tell(l): for item in l: if type(item) is list: #继续进入下一层递归 tell(item) else: print(item) tell(l)
    使用递归+二分法判断一个值是否在列表中(列表是由小到大的)
    nums=[1,3,7,11,22,34,55,78,111,115,137,149,246,371] def search(search_num,nums):if len(nums) == 0:        #如果切不到了,代表只剩一个值而且不是要找的值 print('not exists') return             #中断函数 mid_index=len(nums) // 2     #取到列表最中间的值得索引 if search_num > nums[mid_index]: # in the right nums=nums[mid_index+1:]   #如果在右边的话把右边切出来 search(search_num,nums) elif search_num < nums[mid_index]: # in the left nums=nums[:mid_index]    #如果在左边把左边切出来 search(search_num,nums) else: print('find it') search(31,nums)
  • 相关阅读:
    web三大组件的注册
    springboot 支持 jsp
    redis 储存session
    springboot 做切面
    springboot web静态资源访问
    springboot加载外部配置文件
    springboot 两种配置文件,application.properties ,application.yml ,注入值的两种方式,主动@ConfigurationProperties与被动@value,和其他注解Conditional,PropertySource
    今日立春,SpringBoot! 简单springboot项目搭建开始。
    linux防火墙开放端口
    Don’t try to create file system on an “extended” partition
  • 原文地址:https://www.cnblogs.com/chillwave/p/9183116.html
Copyright © 2020-2023  润新知