递归和二分法

递归

定义:

函数的嵌套调用是:函数嵌套函数。函数的递归调用:它是一种特殊的嵌套调用,但是它在调用一个函数的过程中,又直接或间接地调用了它自身。

如果递归函数不断地调用函数自身,那么这个递归函数将会进入一个死循环,因此我们应该给递归函数一个明确的结束条件。

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

  1. 递推:一层一层递归调用下去,进入下一层递归的问题规模都将会减小
  2. 回溯:递归必须要有一个明确的结束条件,在满足该条件开始一层一层回溯。

递归次数

递归的次数为997 ,但可以用操作设置python运行环境的sys 来获得或者设置递归次数

import sys

#然后设置相关的递归次数

sys.getrecursionlimit()

sys.setrecursionlimit()

为什么用递归

递归的本质就是干重复的活,但是仅仅是普通的重复,我们使用while循环就可以了。递归的循环都是有目的性的

普通递归例子

二分法列子

三元二次表达式

三元表达式固定表达式
    值1 if 条件 else 值2
        条件成立 值1
        条件不成立 值2

列子:


列表生产式

意会理解例子

列表生产式和三元表达式的结合

字典生产式

意会列子

print({i: i**2 for i in range(10)})

普通2列表转化字典列子:

列表生产表达式注意点:

字典表达式小例子:

匿名函数

没有名字的函数匿名函数的特点    临时存在用完就没了

匿名函数结构

# :左边的相当于函数的形参# :右边的相当于函数的返回值# 匿名函数通常不会单独使用,是配合内置函数一起使用

意会列子:

部分内置函数以及与匿名函数的结合

意会列子~~~~~

char()

max()   min()

map()

zip()

filter()

sort()

原文地址:https://www.cnblogs.com/jinpan/p/11179676.html

时间: 2024-07-30 10:17:13

递归和二分法的相关文章

函数嵌套 ,名称空间与作用域 ,闭包函数 ,装饰器 ,迭代器, 生成器 三元表达式,列表解析,生成器表达式 递归与二分法, 内置函数

函数嵌套名称空间与作用域闭包函数装饰器迭代器生成器三元表达式,列表解析,生成器表达式递归与二分法内置函数--------------------------------------------函数的嵌套调用:在调用一个函数的过程中,又调用了其他函数函数的嵌套定义:在一个函数的内部,又定义另外一个函数def max(x,y): if x>y: return x else: return ydef max1(a,b,c,d): res=max(a,b) res2=max(res,c) res3=ma

携程函数、递归、二分法、import、from。。。import

携程函数 与yield类似 yield: 1:把函数的执行结果封装好__iter__和__next__,即得到一个迭代器 2:与return功能类似,都可以返回值,但不同的是,return只能 返回一次值,而yield可以返回多次值 3:函数暂停与再继续运行的状态是有yield保存 def func(count): print('start') while True: yield count count+=1 g=func(10) print(g) print(next(g)) print(ne

Java递归实现二分法,希望各位指点一下

/* 3.使用二分法查找有序数组中元素.找到返回索引,不存在输出-1.使用递归实现   */   import java.util.Scanner;   public class Recursion{   public static void main(String[]args)   {   System.out.println("请输入要找的整数");   Scanner sc=new Scanner(System.in);   int num = sc.nextInt();   i

三元表达式、递归、二分法、匿名函数、内置函数

三元表达式: def max2(x,y): if x>y: return x else: return y res=max2(10,11) print(res) x=10 y=11 三元表达式仅应用于: 1.条件成立返回一个值 2.条件不成立返回一个值 res=x if x>y else y print(res) def max2(x,y): return x if x>y else y print(max2(10,11)) 函数的递归.二分法 函数递归:函数的递归调用,即在函数调用的过

Day5_递归_二分法

递归调用: 在调用一个函数的过程中,直接或间接的调用函数本身. def func(): print('from func') 间接调用: def foo(): print('form foo') bar() def bar(): print('form foo') foo() 递归都是有次数限制的. 问5个人年龄,第五个比第四个大2岁,以此类推,第一个18岁. def age(n): if n ==1: return 18 return age(n-1)+2 print(age(5)) 递归的执

递归实现二分法查找----python

下面是一个最简单的二分法递归实现快速查找的例子,之所以把这么简单的例子写上来是觉得这个小例子可以很好地说明递归的用法和使用技巧. def find(n,array):     left = 0     right = len(array)-1     while left <= right:         mid = (left+right)//2         if n == array[mid]:             print(n)             return True

day5-python之递归与二分法

一.递归的定义 递归调用是函数嵌套调用的一种特殊形式,函数在调用时,直接或间接调用了自身,就是递归调用 二.递归分为两个阶段:递推,回溯 age(5) = age(4) + 2 age(4) = age(3) + 2 age(3) = age(2) + 2 age(2) = age(1) + 2 age(1) = 18 age(n)=age(n-1)+2 #n>1 age(1)=18 #n=1 ##########################3 def age(n): if n == 1:

python的递归和二分法

递归是什么 递归是一种函数的类型,以类似于首尾相连的贪吃蛇的模式执行. count = 0 def func(): global count count = count + 1 print("我有点小帅%s"%count) func() func() #输出我有点小帅1.........我有点小帅998 注意,上条代码中为什么执行998次呢 我们可以通过sys模块来进行查看默认最大执行次数,同时 sys.setrecursionlimit() 也能进行更改. print(sys.get

内置函数二、递归、二分法

一.lambda匿名函数 为了解决一些简单的需求而设计的一句话函数,如下示例: # 以前的写法 def func(n): return n ** n print(func(10)) # lambda函数 f = lambda n : n ** n print(f(10)) print(f.__name__) # 结果为:<lambda> # __name__可以查看函数的名字,匿名函数__name__的值都是<lambda> lambda表示的是匿名函数,不需要用def来声明,一句