我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python 递归和二分法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python 递归和二分法

一 内置函数

  1. revserd 翻转,返回的是迭代器

# 将 s 倒置
s = '不是上海自来水来自海上'
# 方法一
print(s[::-1])
# 方法二
s1 = reversed(s)
i = ''
for el in s1:
  i +=el
  print(i)

  2.slice 切片

lis = ['nishi','woshi','shuia','benjim']
s = slice(1,3)
print(lis[s])

  3.formate

# 格式化输出
s = "我叫{name},我想去{adress},我喜欢{hobby}.".format(name='zhangmeng',adress='上海',hobby='dance')
print(s)


# 字符串
print(format('test', '<20')) # 左对齐
print(format('test', '>20')) # 右对齐
print(format('test', '^20')) # 居中
# 数值
print(format(3, 'b')) # 二进制
print(format(97, 'c')) # 转换成unicode字符
print(format(11, 'd')) # 十进制
print(format(11, 'o')) # 八进制
print(format(11, 'x')) # 十六进制(小写字母)
print(format(11, 'X')) # 十六进制(大写字母)
print(format(11, 'n')) # 和d一样
print(format(11)) # 和d一样
# 浮点数
print(format(123456789, 'e')) # 科学计数法. 默认保留6位小数
print(format(123456789, '0.2e')) # 科学计数法. 保留2位小数(小写)
print(format(123456789, '0.2E')) # 科学计数法. 保留2位小数(大写)
print(format(1.23456789, 'f')) # 小数点计数法. 保留6位小数
print(format(1.23456789, '0.2f')) # 小数点计数法. 保留2位小数
print(format(1.23456789, '0.10f')) # 小数点计数法. 保留10位小数
print(format(1.23456789e+10000, 'F')) # 小数点计数法.

  4. type() 返回类型    ord()  输入字符找字符编码的位置     chr()  输入位置找出对应的字符    ascii()判断给出的信息是否是ascii 

for i in range(65536):
    print(chr(i), end="")

二. 递归

  函数自己调用自己,递归的入口(参数)  和 出口(return)

语法:

def func():
    print('我是递归')
    func()

func() # 官方显示最多到1000.但不会跑到1000,实际到998
# 树形结构的遍历

import os
def func(lujing, n):
    lis = os.listdir(lujing) # 打开文件夹,列出文件夹内的所有文件名
    for el in lis: # el 为文件的名字
    # 还原文件路径
    path = os.path.join(lujing,el)
    if os.path.isdir(path):# 判断路径是否是文件夹
        print('*' * n,el) # 显示文件夹的名字
        func(path, n+1) # 再来一次
    else:
        print('/t'*n,el) # 显示文件

func('f:/a', 0)
import os
def func(lujing, n):
    lis = os.listdir(lujing ) # 打开文件夹,列出文件夹内的所有文件名
    for el in lis: # el为文件名
# 还原文件的路径
    path = os.path.join(lujing, el)
    if os.path.isdir(path): # 判断路径是否是文件夹
        print('*'* n, el) # 显示文件夹名称
        func(path, n+1) # 再来一次
    else:
        with open(path,mode='wb') as f: # 打开文件,都写入内容
            f.write(b'123456')
              print('/t'*n, el) # 显示文件
func('F:/a',0)

三. 二分法

  掐头结尾取中间,查找效率非常高,二分法查找的主要作用就是查找元素
# 二分法查找
lst = [1,4,6,7,9,21,23,45,67,87,65,43,89]
n = int(input('请输入一个数:'))
lst = sorted(lst)
# print(lst)
left = 0
right = len(lst)-1
while left <= right:
    mid = (left + right)//2
    if n > lst[mid]:
        left = mid+1
    elif n < lst[mid]:
        right = mid -1
     else:
        print("存在")
        break
else:
print('不存在')
# 递归 切割列表

def func(n,lst):
    left = 0
    right = len(lst)-1
    if lst != []:
        mid = (left+right)//2
         if n>lst[mid]:
            func(n,lst[mid+1:])
        elif n < lst[mid]:
            func(n,lst[:mid])
        else:
            print("找到了")
            return
    else:
        print("没找到")
        return

n = int(input('请输入你要查找的数:'))
lst = [1,4,6,7,9,21,23,45,67,87,65,43,89]


func(n,lst)
# 递归2
def func(n,lst,left,right): # 递归找到什么是可变的,什么是不可变的
    if left <= right:
        mid = (left+right)//2
            if n > lst[mid]:
                left = mid+1
                return func(n,lst,left,right)
            elif n < lst[mid]:
                right = mid - 1
                return func(n, lst, left, right)
            else:
                print('找到了')
                return mid # 难点
    else:
        print('找不到')
        return -1

n = int(input('请输入你要查找的数:'))
lst = [13,45,56,67,78,57,89,101]
ret = func(n,lst,0,len(lst)-1)
print(ret)
# 最快的查找方法

lst = [13,45,56,57,67,78,89,101]

# 找出最大的数
new_lst = []
for i in range(99):
    new_lst.append(0)

for i in lst:
    new_lst[i] = 1

i = int(input('请输入你要找的数据:'))
if new_lst[i] == 0:
    print('不存在')
else:
    print('存在')

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python 递归和二分法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python 递归和二分法

一 内置函数  1. revserd 翻转,返回的是迭代器# 将 s 倒置s = '不是上海自来水来自海上'# 方法一print(s[::-1])# 方法二s1 = reversed(s)i = ''for el in s1:  i +=e
2023-01-30

python之递归与二分法

1. 递归 自己调用自己 递归的入口(参数) 和 出口(return) 树形结构的遍历 import osdef func(lujing, n): lst = os.listdir
2023-01-30

递归与二分法

递归自己调用自己递归的入口(参数)和出口(return)树状结构的遍历import osdef func(lujing, n): # "d:/a/" lst = os.listdir(lujing) # 打开文件夹. 列出该文件夹内的
2023-01-30

python二分查找算法的递归实现方法

本文实例讲述了python二分查找算法的递归实现方法。分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码:def binarySearch(alist, item):first = 0last = len(alist)-1fou
2022-06-04

python 数据结构之二分查找的递归和

二分查找就是待查找的列表进行分半搜索如下所示二分查找普通实现:def erfen(alist, item): start = 0 end = len(alist) - 1 while start <= end:
2023-01-30

Java二叉树的递归和非递归遍历方法是什么

本篇内容主要讲解“Java二叉树的递归和非递归遍历方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java二叉树的递归和非递归遍历方法是什么”吧!前言二叉树的遍历方法分为前序遍历,中序遍
2023-06-30

Android中关于递归和二分法的算法实例代码

// 1. 实现一个函数,在一个有序整型数组中二分查找出指定的值,找到则返回该值的位置,找不到返回 -1。package demo; public class Mytest { public static void main(String[
2022-06-06

Java方法递归的形式和常见递归算法代码分析

本篇内容介绍了“Java方法递归的形式和常见递归算法代码分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!方法递归方法递归的形式什么是方法递
2023-07-05

C++二分查找与递归的方法是什么

本篇内容主要讲解“C++二分查找与递归的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++二分查找与递归的方法是什么”吧!#include//#include//#include//
2023-06-04

python3--递归函数,二分查找算法的实现

enumerate枚举的用法例子1li=[Sam,Tom,Jack,老王]forindex,nameinenumerate(li):#用两个变量接收,一个接收索引值,一个接收列表里的每个元素print(index,name)执行结果0 Sa
2023-01-30

什么是Java二分查找非递归

本篇内容主要讲解“什么是Java二分查找非递归”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是Java二分查找非递归”吧!基本介绍1.二分查找只适用于从有序的数列中进行查找(比如数字和字母)
2023-06-15

C++ 函数的递归实现:递归与非递归算法的比较分析?

递归算法通过函数自调用解决结构化的问题,优点是简洁易懂,缺点是效率较低且可能发生堆栈溢出;非递归算法通过显式管理堆栈数据结构避免递归,优点是效率更高且避免堆栈溢出,缺点是代码可能更复杂。选择递归或非递归取决于问题和实现的具体限制。C++ 函
C++ 函数的递归实现:递归与非递归算法的比较分析?
2024-04-22

day15-python之变量和递归

1.局部变量与全局变量 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 # name='lhf' 5 # def change_name(): 6 # glob
2023-01-31

C++ 函数递归详解:分治法中的递归应用

递归是一种函数自我调用的技术,适用于可分解成较小规模子问题的问题。分治法采用递归将问题分解成独立子问题,逐步解决。如 findmaximum() 函数递归查找数组中最大值,通过检查基本情况(单一元素),计算中点,递归调用子数组,最后返回左右
C++ 函数递归详解:分治法中的递归应用
2024-05-03

Python 递归计算分数数列

C语言的课后习题求数列:2/1,3/2,5/3,8/5,13/8,21/13,...前50项的和数列规律:第二项的分母是【前一项分子】第二项的分子是【前一项分子与分母的和】from fractions import Fractiondef
2023-01-31

Java方法递归的形式和常见递归算法(方法递归结合File类查找文件)

方法递归方法直接调用自己或者间接调用自己的形式称为方法递归(recursion),递归做为一种算法在程序设计语言中广泛应用,这篇文章主要介绍了Java方法递归的形式和常见递归算法-方法递归结合File类查找文件,需要的朋友可以参考下
2023-02-28

python递归调用的用法

这篇文章主要讲解了“python递归调用的用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python递归调用的用法”吧!题目: 一个5位数,判断它是不是回文数。即12321是回文数
2023-06-04

递归与分治算法练习

  最近刚学习算法设计与分析的课程,所用教材是清华大学出版社王晓东编著的《算法设计与分析》。一道关于递归与分治算法的练习题如下:  刚拿到题目觉得这题目似乎和递归分治没有什么关系,但是O(1)的空间复杂度,以及O(n)的时间复杂度度就限制了
2023-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录