码迷,mamicode.com
首页 > 其他好文 > 详细

函数递归与二分法

时间:2018-10-10 21:52:49      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:while   并且   递归调用   函数   情况下   高效   arch   span   sed   

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

 

函数递归与二分法

标签:while   并且   递归调用   函数   情况下   高效   arch   span   sed   

原文地址:https://www.cnblogs.com/xiamenghan/p/9768698.html

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