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
Python--递归相关推荐
- 判断某数组是不是二叉树的后序遍历序列 python递归与非递归解法
python 递归 class Solution:def VerifySquenceOfBST(self, sequence):# write code hereif len(sequence) &l ...
- Python递归获取文件夹下面所有文件名字:
Python递归获取文件夹下面所有文件名字: def getAllFiles(targetDir):files = []listFiles = os.listdir(targetDir)for i i ...
- python递归题目_Python递归的问题?
import time def outer(F): def wrapper(x): start = time.time() F(x) end = time.time() print(end - sta ...
- LeetCode 21. Merge Two Sorted Lists--合并2个有序列表--python递归,迭代解法
题目地址: Merge two sorted linked lists and return it as a new list. The new list should be made by spli ...
- python 递归遍历二叉树
python 递归遍历二叉树 我确定很多人不能真正的理解二叉树-- class Node: def __init__(self,value=0,left=0,right=0): self.value= ...
- python 递归方式实现斐波那契数列
python 递归方式实现斐波那契数列 import time t1=time.time() def factorial(n):if n==1 or n==2:return 1else:return ...
- python递归出口怎么写_Python进阶 —— 递归
作者是一名沉迷于Python无法自拔的蛇友,为提高水平,把Python的重点和有趣的实例发在简书上. 递归 是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现象.在计算机编程里,递归 ...
- Python递归实现汉诺塔
Python递归实现汉诺塔: def f3(n,x,y,z): if(n==1):print(x,'--->',z)else:f3(n-1,x,z,y)print(x,'--->',z)f ...
- python递归查找_Python程序使用递归查找数字的幂
python递归查找 Given the base x and the power y and we have to find the x to the power y using recursion ...
- python递归遍历目录_Python实现递归遍历文件夹并删除文件
思路: 遍历文件夹下面的文件夹 如果文件夹名称等于".svn",则修改文件夹的属性(因为".svn"的文件都是只读的,你不能直接删除) 删除此文件夹 如果文件夹 ...
最新文章
- oracle 判断11位数字,45个非常有用的 Oracle 查询语句小结
- LinearLayout 里面放入一个超宽的TextView
- Rails 新浪微博的登录认证
- Python爬虫应用实战-如何对爬取的数据进行数据存储?
- Acwing第 27 场周赛【完结】
- boost::math::tools::polynomial相关用法的测试程序
- Sublime Text 3添加右键
- 我在 MySQL 的那些年
- alinq mysql_ALinq让Mysql变得如此简单_MySQL
- Xcode添加静态库以及编译选项配置常见问题
- 用SMS2003部署Windows XP SP3:SMS2003系列之十
- C语言单链表定义及各类操作
- 台大李宏毅Machine Learning 2017Fall学习笔记 (8)Backpropagation
- Skinned Mesh原理解析和一个最简单的实现示例
- 饿了么UI框架表单验证
- 项目经理应该知道的五种项目管理工具
- 使用函数调用 输出三个数中的最大值,最小值
- 功能测试与性能测试常见方法
- 实现网页原路返回:从哪个页面跳转过来就返回哪个页面
- java socket 聊天室_java利用Socket实现聊天室功能实例