zoukankan      html  css  js  c++  java
  • 函数递归与二分法

    1.什么是函数递归

      函数的递归调用是函数嵌套调用的一种特殊形式,

      特殊在调用一个函数的过程中又直接或者间接地调用了该函数本身

      

      递归本质就是一个循环的过程,

        但是递归必须满足两个原则:

          1.每进入下一层递归,问题的规模必须有所减少

          2.递归必须有一个明确的结束条件或者说有一个明确的进入下一层递归的条件

        并且递归有两个明确的阶段

          1.回溯:一层一层地递归调用下去

          2.递推:在某一层结束掉递归,然后一层一层返回

    2.为何要用递归:

      在某些情况下,基于递归来使用重复的过程比while循环更加简单

    3.如何用

    举例

    def age(n):
        if n == 1:
            return 18
        return age(n-1)+2
    
    res=age(5)
    print(res)
    
    ========================================
    
    list1 = [1, [2, [3, [4, [5, [6, [7, [8, [9]]]]]]]]]
    
    
    def func(l):
        for i in l:
            if type(i) is list:
                func(i)
            else:
                print(i)
    
    
    func(list1)
    View Code

    # 二分法:二分法是算法的一种,算法是如何高效地解决问题的思路

    nums = [1, 13, 15, 23, 27, 31, 33, 57, 73, 81, 93, 94, 97, 101]
    
    
    def binary_search(find_num, nums):
        print(nums)
        if len(nums) == 0:
            print('not exists')
            return
    
        mid_index = len(nums) // 2
        if find_num > nums[mid_index]:
            nums = nums[mid_index + 1:]
            binary_search(find_num, nums)
        elif find_num < nums[mid_index]:
            nums = nums[:mid_index]
            binary_search(find_num, nums)
        else:
            print('find it')
    
    
    binary_search(81, nums)
    View Code
  • 相关阅读:
    2019/3/20统计单词数
    2019/3/20日历问题
    2019/3/20计算器1
    2019/3/17素数因子
    2019/3/17日历问题2
    2019/2/14多项式输出
    2019/2/13打印华氏温度与摄氏温度对照表
    2019/2/12孪生素数
    2019/2/12开灯问题
    2019/2/11 6084问题
  • 原文地址:https://www.cnblogs.com/xiamenghan/p/9768698.html
Copyright © 2011-2022 走看看