Python--递归

面向函数编程

def func():print('从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呀?')func()

解耦:尽量把不相关的功能拆开,用的时候再调用函数,增强代码重用性,减少代码变更的相互影响
要完成一个完整的功能,但这个功能的规模要尽量小,并且和这个功能无关的其他代码应该和这个函数
分离
recursion 递归

什么是递归:

一个函数在内部调用了自己本身

def func():print('从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呀?')func()print('123')

这里面的123永远不会打印,永远都在执行下一个func()
import sys 和python解释器相关的模块
递归层数在python中最大997。可以改限制。

import syssys.setrecursionlimit(1000000)  # 修改最大范围 ---但是 python 自己会根据计算机性能停止

count=0
def func():global countcount+=1print(count)func()
func()

 

递归实例:
写递归函数,必须要有一个结束条件
alex比egon大两岁      alex=egon+2
egon比wusir大两岁     egon=wusir+2
wusir比金鑫大两岁     wusir=金鑫+2
金鑫40了              金鑫40

推测的过程是递,后面计算是归

def age(n):if n ==4:return 40return age(n+1)+2
f = age(1)
print(f)

根据线索向下是递,拿到一个结果再向上是归

递归方法求阶乘:

def jie(n):return jie(n-1)*nprint(jie(7))

 

二分查找

l=[1,5,6,7,8,9,25,26,78,123,456,789,1233,7899,8521,9635,10255]
def search(num,l,start=None,end=None):start=start if start else 0end=end if end else len(l)-1mid = (end-start)//2+startif start>end:return Noneif l[mid]>num:return search(num,l,0,mid-1)if l[mid]<num:return search(num,l,mid+1,end)if l[mid]==num:return mid,l[mid]
print(search(78,l))

无序的先用.sort()排序

斐波那契数列递归

 

li=[1,1]
def fib(n):if n>len(li):li.append(li[-2]+li[-1])fib(n)return li
n = input('请输入要计算的数字个数:')
n = int(n)
ret = fib(n)
print(ret)

面试真题递归

 

data={'time':'2016-08-05T13:13:05','some_id':'ID1234',
'grp1':{'fld1':1,'fld2':2},
'xxx2':{'fld3':0,'fld5':0.4},'fld6':11,'fld7':7,'fld46':8}
def select(data,fields):li=fields.split('|')for item in data:if item in li:print(item,data[item])elif type(data[item])==dict:ret = select(data[item],fields)
n = input('按照格式输入:')
select(data,n)

三级菜单递归

menu = {'北京': {'海淀': {'五道口': {'soho': {},'网易': {},'google': {}},'中关村': {'爱奇艺': {},'汽车之家': {},'youku': {},},'上地': {'百度': {},},},'昌平': {'沙河': {'老男孩': {},'北航': {},},'天通苑': {},'回龙观': {},},'朝阳': {},'东城': {},},'上海': {'闵行': {"人民广场": {'炸鸡店': {}}},'闸北': {'火车战': {'携程': {}}},'浦东': {},},'山东': {},
}
#相同的数据类型 嵌套在一起def Three_Level_Menu(menu):while True:for k in menu:print(k)key = input('>>>')if key == 'q':return 'q'elif key == 'b':breakelif key in menu:ret = Three_Level_Menu(menu[key])if ret == 'q': return 'q'
Three_Level_Menu(menu)
三级菜单

 

转载于:https://www.cnblogs.com/gaoshengyue/p/7485020.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467728.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

传统神经网络

文章目录神经网络的起源&#xff1a;线性回归一个线性回归问题线性回归优化方法&#xff1a;梯度下降梯度计算梯度计算总结线性回归&#xff1a;输出线性回归&#xff1a;局限从线性到非线性非线性激励常用的非线性激励函数tanhRELULecky RELU神经元—神经网络神经网络构建神经…

深度学习之卷积神经网络

文章目录深度学习之卷积神经网络链式反向梯度链式法则的计算神经网络中链式法则实例二、卷积神经网络-卷积层&#xff08;一&#xff09;什么是卷积层&#xff08;二&#xff09;有什么组成受什么影响&#xff0c;有何特点卷积网络正向传播反向传播卷积和神经网络功能层深度学习…

卷积神经网络高级篇

【 文章目录Alextnet参数计算VGG alexnet增强版VGG参数计算VGG作用GoogleNet 多分辨率融合全卷积神经网络RESNET结构特性有效性结构化图片特殊处理识别效果全局部卷积网络缺陷U-net图片生成网络VGG u-netAlextnet 参数计算 VGG alexnet增强版 VGG参数计算 VGG作用 GoogleNet 多…

LinuxGPIO操作和MTK平台GPIO

GPIO口配置是一个历史性的问题&#xff0c;不管我们使用什么MCU&#xff0c;单片机也好&#xff0c;ARM也好&#xff0c;都离不开驱动GPIO口。Linux下有一个宏&#xff0c;GPIO_GPIO_SYSFS&#xff0c;打开这个宏后&#xff0c;编译烧录到设备端&#xff0c;去看看sys/class/gp…

Linux cpu亲和力

最近在对项目进行性能优化&#xff0c;由于在多核平台上&#xff0c;所以了解了些进程、线程绑定cpu核的问题&#xff0c;在这里将所学记录一下。不管是线程还是进程&#xff0c;都是通过设置亲和性(affinity)来达到目的。对于[进程]的情况&#xff0c;一般是使用sched_setaffi…

卷积神经网络(目标分类)

文章目录目标分类基本框架数据准备数据扩充数据规范模型设计任务分类局部更改训练细节目标分类基本框架 数据准备 现有数据集的子集&#xff0c;网络采集&#xff0c;现有数据人工标注 数据扩充 原始数据切割&#xff0c;噪声颜色等像素变化&#xff0c;旋转平移 数据规范…

安卓9.0添加服务修改SELinux

#文章目录#前言#SELinux来源#SELinux基本框架#SELinux 在不同版本的表现#使用audit2allow工具生成SELinux 权限#完整代码#前言先推荐下之前的SELinux文章&#xff0c;但是那个是7.1的&#xff0c;在9.0上已经在差别很大的了。Android7.1 在init.rc 添加shell服务题外话~在企业里…

卷积神经网络-目标探测

文章目录目标探测介绍任务思路DPMRCNN1&#xff09;候选区域选择2&#xff09;CNN特征提取3&#xff09;分类与边界回归R-CNN总结优点缺陷FAST-RCNNFASTER-RCNNYOLO目标探测介绍 任务 分类获取坐标 目标探测 图片分割 思路 回归问题&#xff1a;利用神经网络进行目标识别&am…

相机视场角和焦距_镜头小讲堂(一)镜头的焦距

在刚购买完相机的时候&#xff0c;我们久会考虑需要什么样的镜头来配合机身来使用。而市场上的镜头种类是在太多了&#xff0c;所以我们就要学习了解下镜头都有哪些种类&#xff0c;选择哪种镜头比较有优势。这也是学习摄影必备的基础知识。01 镜头的焦距焦距是镜头的重要指标&…

C语言指定初始化器解析及其应用

由于笔者能力有限&#xff0c;文中如果出现错误的地方&#xff0c;欢迎大家给我指出来&#xff0c;我将不胜感激&#xff0c;谢谢&#xff5e;#指定初始化器的概念C90 标准要求初始化程序中的元素以固定的顺序出现&#xff0c;与要初始化的数组或结构体中的元素顺序相同。但是在…

递归神经网络

文章目录LSTM![在这里插入图片描述](https://img-blog.csdnimg.cn/20200609171449198.pngLSTM 4INPUTS 1outputs

CNN+RNN

文章目录相同点不同点组合意义组合方式图片标注基本思路模型设计&#xff0d;数据准备视频行为识别视频行为识别图片问答相同点 传统神经网络的扩展 前向计算产生结果&#xff0c;反向计算模型更新 每层神经网络横向可以多个神经元共存&#xff0c;纵向可以多层神经网络链接 …

深入理解Linux内核链表

之前写过的链表文章&#xff0c;再结合这篇&#xff0c;我觉得是一道硬菜。Linux内核链表C语言&#xff0c;链表大家五一节日快乐&#xff0c;我知道劳动节大家都辛苦了&#xff0c;吃点硬菜好顶住饿肚子~#一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构&#x…

GAN

文章目录生成对抗网络(GAN)基础生成对抗网络 优点&#xff1a;缺点&#xff1a;生成对抗网络深度GANDCGAN结构细节特征研究DCGAN总结条件GAN模型结构INFOGANInfoGAN: 自动学习z中部分变量意义Wasserstein GANGAN存在问题原因WGAN特点改进方法&#xff1a;生成对抗网络(GAN)基础…

1200可以读取modbus tcp_S7-1200 作 MODBUS TCP服务器

S7-1200 Modbus TCP 通信指令块STEP 7 V13 SP1 软件版本中的Modbus TCP库指令目前最新的版本已升至V4.0&#xff0c;该版本的使用需要具备以下两个条件&#xff1a;1. 软件版本&#xff1a; STEP 7 V13 SP1及其以上2. 固件版本&#xff1a; S7-1200 CPU 的固件版本V4.1图1. Mod…

Linux一定需要文件系统吗?

开篇题外话&#xff1a;对于Linux初学者来说&#xff0c;这是一个很纠结的问题&#xff0c;但这也是一个很关键的问题&#xff01; 一语破天机&#xff1a;“尽管内核是 Linux 的核心&#xff0c;但文件却是用户与操作系统交互所采用的主要工具。这对 Linux 来说尤其如…

迁移学习

文章目录为什么需要迁移学习模型Fine-‐tune![在这里插入图片描述](https://img-blog.csdnimg.cn/20200612000845217.png)保守训练层迁移Multitask Learning渐进式神经网络/Progressive Neural Networks域对抗零样本学习Self-‐taught learning为什么需要迁移学习 使用深度学习…

怎么撤回操作_微信又更新,拍一拍能撤回了

微信拍一拍功能在 6 月份刚上线时&#xff0c;「微信之父」张小龙就发朋友圈表示&#xff0c;微信史上仅需一行代码的有趣功能终于来了&#xff0c;拍一拍&#xff0c;像蚂蚁一样打招呼。拍一拍功能将大家在现实世界的肢体交流带到了虚拟世界&#xff0c;相信大家都有儿时和三俩…

吹牛

起了一个不太雅观的标题&#xff0c;我很想给我们的会晤起一个响亮的名字&#xff0c;比如「三方会谈」或者「新一代5.4事件」&#xff0c;再或者牛逼点的&#xff0c;我们可以叫「西乡起义」。好吧&#xff0c;我摊牌了&#xff0c;这次吃饭就是三个屌丝和一个大佬的闲暇吹牛&…

Spring MVC-视图解析器(View Resolverr)-内部资源视图解析器(Internal Resource View Resolver)示例(转载实践)...

以下内容翻译自&#xff1a;https://www.tutorialspoint.com/springmvc/springmvc_internalresourceviewresolver.htm 说明&#xff1a;示例基于Spring MVC 4.1.6。 InternalResourceViewResolver用于将提供的URI解析为实际的URI。以下示例显示如何使用Spring Web MVC框架使用I…