递归函数,二分查找

一、递归的定义1.什么是递归?  在一个函数里再调用这个函数本身2.最大递归层数做了一个限制:997,但是也可以自己限制

(1)默认递归层数
def  foo(n):
    print(n)
    n+=1
    foo(n)
foo(1)
(2)修改递归层数
import sys
sys.setrecursionlimit(2000)  #修改递归层数
n = 0
def f():
    global n
    n += 1
    print(n)
    f()
f()

3.斐波那契数列,第10个数是多少?(递归函数写)

def f5(depth,a1,a2):
    if depth == 10:
        return a2
    a3 = a1 + a2
    return f5(depth + 1,a2,a3)
print(f5(1,0,1))

def fib(n,a=0,b=1):     #算法
    if n==1 or n == 2:
        return a+b
    else:
        return fib(n-1,b,a+b)
print(fib(10))
二、算法 计算的方法
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]找出66和他的位置
def func(li,aim,start = 0 , end = None):
    if end == None:
        end = len(li) - 1
    if start <= end:
        mid = end - start // 2 + start
        if li[mid] > aim:
            return func(li,aim,start = start,end = mid - 1)
        elif li[mid] < aim:
            return  func(li,aim,start = mid + 1,end = end)
        elif li[mid] == aim:
            return li[mid],mid
    else:
        print("没在")
li = [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]
print(func(li,66))




 

原文地址:https://www.cnblogs.com/lara0520/p/8503111.html

时间: 2024-10-11 23:19:05

递归函数,二分查找的相关文章

python函数:递归函数及二分查找算法

本文和大家分享的主要是python的递归函数及二分查找算法相关内容,一起来看看吧,希望对大家学习python有所帮助. 一.递归的定义 def story(): s = """ 从前有个山,山里有座庙,庙里老和尚讲故事, 讲的什么呢? """ print(s) story() story() 老和尚讲故事 递归的定义 -- 在一个函数里再调用这个函数本身.这种魔性的使用函数的方式就叫做 递归 . 递归的最大深度:997 1.python递归最大层

递归函数之二分查找

一.递归 首先引入一个例子 def story(): s = """ 从前有个山,山里有座庙,庙里老和尚讲故事, 讲的什么呢? """ print(s) story() story() 老和尚讲故事 在一个函数里再调用这个函数本身,其最大层数限制是997,最大层数限制是python默认的 结束递归的标志是:return 修改递归最大深度的手段(一般情况下还是别修改比较好) import sys sys.setrecursionlimit(1000

day 15,递归函数,二分查找法

一.递归函数 '''1,算法:二分查找,树运算,堆,栈.... '''#前提,有序且唯一的数字数列# 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]# print(l.index(66))# count = 0# for i in l:# if i == 66:# print(count)# break# count += 1 #,1,aim 6#2,aim与list的中间的数进行比较mi

递归函数、二分查找、面相对象初识、类空间,对象空间、组合、继承

一.递归函数 一般递归100多次,都没有解决的问题,放弃递归. 默认递归深度:998 修改默认递归次数 import sys sys.setrecursionlimit(100000) #设置十万次 count = 0 def func1(): global count count += 1 print(count) func1() func1() 用递归 解决一个年龄问题. alex 他比佩奇 大两岁.  4   age(3) + 2 佩奇 他比日天 大两岁.  3   age(2) + 2

递归函数和二分查找

递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身, 这个函数就是递归函数. 举个例子,我们来计算阶乘 n! = 1 x 2 x 3 x ... x n,用函数 fact(n) 表示,可以看出: fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n 所以,fact(n)可以表示为n*fact(n-1),只有 n = 1 时需要特殊处理. 于是,fact(n) 用递归的方式写出来就是: d

[经典算法] 二分查找

题目说明: 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回对应的数组下标,失败返回-1. 题目解析: 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表. 二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通过不断缩小包含T的范围,最终就可以找到它.其算法流程如下: 1.一开始,范围覆盖整个数组. 2

基础算法介绍 —— 二分查找算法

不知不觉在目前的公司待满3年了,打算回家找份工作.面试中被问到关于算法的题目:有哪些常见的查找算法?下来就把我所掌握的查找算法分享给大家,本文主要介绍二分查找算法. 算法定义(摘自百度):二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表.首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功:否则利用中间位置记录将表分成前.后两个子表,如果

python--递归、二分查找算法

递归 初识递归 递归的定义--在一个函数里再调用这个函数本身 现在我们已经大概知道刚刚讲的story函数做了什么,就是在一个函数里再调用这个函数本身,这种魔性的使用函数的方式就叫做递归. 刚刚我们就已经写了一个最简单的递归函数. 递归的最大深度--997 正如你们刚刚看到的,递归函数如果不受到外力的阻止会一直执行下去.但是我们之前已经说过关于函数调用的问题,每一次函数调用都会产生一个属于它自己的名称空间,如果一直调用下去,就会造成名称空间占用太多内存的问题,于是python为了杜绝此类现象,强制

算法前戏 递归 二分查找 列表查找

一.递归 概念: 函数直接或者间接的调用自身算法的过程,则该函数称为递归函数.在计算机编写程序中,递归算法对解决一大类问题是十分有效的. 特点: ①递归就是在过程或者函数里调用自身. ②在使用递归策略时,必须有一个明显的结束条件,称为递归出口.问题规模相比上次递归有所减少, ③递归算法解题通常显得很简洁,但递归算法解题的效率较低.所以一般不倡导使用递归算法设计程序. ④在递归调用的过程当中系统的每一层的返回点.局部变量等开辟了栈来存储.递归函数次数过多容易造成栈溢出等. 所以一般不倡导用递归算法

数据结构&amp;算法(二)_算法基础之前传(递归、时间复杂度、空间复杂度、二分查找)

什么是算法: 间而言之算法(Algorithm):一个计算过程,解决问题的方法 递归的两个特点: 调用自身 结束条件 递归示例: def func(x): if x==0: print("我的小鲤鱼",end='') else: print("抱着",end='') func(x-1) print("的我",end="") func(5) 递归示例一:我的小鲤鱼 ''' 1 1 2 3 5 8 13 21 34 输出长度为 n