python:递归函数

栏目: Python · 发布时间: 6年前

内容简介:python:递归函数

1,初识递归函数

1)什么是递归函数?

在函数中自己调用自己叫做递归函数

递归函数超过一定程度会报错。---RecursionError: maximum recursion dep th exceeded while calling a Python object。递归的错误,超过了递归函数的最大深度。

2)最大递归深度:默认997

3)递归函数的优缺点

#如果递归次数太多,就不适合使用递归来解决问题。

#递归的缺点:占内存

# 递归的优点:会让代码变简单

4)什么时候用递归?

问题分析一级一级向下,答案一步一步向上返。

2、初识算法------二分法

#找到目标值aim,在l中的位置
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
def find(l,aim):
    mid_index = len(l)//2 #找中间的索引
    if l[mid_index] < aim: #如果中间索引所对应的值<目标值
        new_l = l[mid_index+1 :]
        find(new_l,aim)
    elif l[mid_index] > aim: #如果中间索引所对应的值>目标值
        new_l = l[:mid_index]
        find(new_l, aim)
    else:
        print('找到了',mid_index,l[mid_index])
find(l,66)
#问题:如果目标值不在l里,则会报错,且没有返回值。因此需要进行改进

改进:

def find(l,aim,start = 0,end = None):
    end = len(l) if end is None else end
    mid_index = (end - start)//2 + start
    if start <= end:
        if l[mid_index] < aim:
            return find(l,aim,start =mid_index+1,end=end)
        elif l[mid_index] > aim:
            return find(l, aim, start=start, end=mid_index-1)
        else:
            return mid_index
    else:
        return '找不到这个值'


ret= find(l,44)
print(ret)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

React Native开发指南

React Native开发指南

[美]艾森曼 / 黄为伟 / 人民邮电出版社 / 2016-6-1 / CNY 59.00

本书通过丰富的示例和详细的讲解,介绍了React Native这款JavaScript框架。在React Native中利用现有的JavaScript和React知识,就可以开发和部署功能完备的、真正原生的移动应用,并同时支持iOS与Android平台。除了框架本身的概念讲解之外,本书还讨论了如何使用第三方库,以及如何编写自己的Java或Objective-C的React Native扩展。一起来看看 《React Native开发指南》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具