面向函数编程

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--递归相关推荐

  1. 判断某数组是不是二叉树的后序遍历序列 python递归与非递归解法

    python 递归 class Solution:def VerifySquenceOfBST(self, sequence):# write code hereif len(sequence) &l ...

  2. Python递归获取文件夹下面所有文件名字:

    Python递归获取文件夹下面所有文件名字: def getAllFiles(targetDir):files = []listFiles = os.listdir(targetDir)for i i ...

  3. python递归题目_Python递归的问题?

    import time def outer(F): def wrapper(x): start = time.time() F(x) end = time.time() print(end - sta ...

  4. 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 ...

  5. python 递归遍历二叉树

    python 递归遍历二叉树 我确定很多人不能真正的理解二叉树-- class Node: def __init__(self,value=0,left=0,right=0): self.value= ...

  6. python 递归方式实现斐波那契数列

    python 递归方式实现斐波那契数列 import time t1=time.time() def factorial(n):if n==1 or n==2:return 1else:return ...

  7. python递归出口怎么写_Python进阶 —— 递归

    作者是一名沉迷于Python无法自拔的蛇友,为提高水平,把Python的重点和有趣的实例发在简书上. 递归 是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现象.在计算机编程里,递归 ...

  8. 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 ...

  9. python递归查找_Python程序使用递归查找数字的幂

    python递归查找 Given the base x and the power y and we have to find the x to the power y using recursion ...

  10. python递归遍历目录_Python实现递归遍历文件夹并删除文件

    思路: 遍历文件夹下面的文件夹 如果文件夹名称等于".svn",则修改文件夹的属性(因为".svn"的文件都是只读的,你不能直接删除) 删除此文件夹 如果文件夹 ...

最新文章

  1. oracle 判断11位数字,45个非常有用的 Oracle 查询语句小结
  2. LinearLayout 里面放入一个超宽的TextView
  3. Rails 新浪微博的登录认证
  4. Python爬虫应用实战-如何对爬取的数据进行数据存储?
  5. Acwing第 27 场周赛【完结】
  6. boost::math::tools::polynomial相关用法的测试程序
  7. Sublime Text 3添加右键
  8. 我在 MySQL 的那些年
  9. alinq mysql_ALinq让Mysql变得如此简单_MySQL
  10. Xcode添加静态库以及编译选项配置常见问题
  11. 用SMS2003部署Windows XP SP3:SMS2003系列之十
  12. C语言单链表定义及各类操作
  13. 台大李宏毅Machine Learning 2017Fall学习笔记 (8)Backpropagation
  14. Skinned Mesh原理解析和一个最简单的实现示例
  15. 饿了么UI框架表单验证
  16. 项目经理应该知道的五种项目管理工具
  17. 使用函数调用 输出三个数中的最大值,最小值
  18. 功能测试与性能测试常见方法
  19. 实现网页原路返回:从哪个页面跳转过来就返回哪个页面
  20. java socket 聊天室_java利用Socket实现聊天室功能实例

热门文章

  1. 软件集成策略故事连载----对项目的不利影响竟然这么大
  2. Linux下判断cpu物理个数,几核,是超线程还是多核心
  3. iOS开发之普通网络异步请求与文件下载方法
  4. Firefox 66回归!修复多项臭虫相关问题
  5. 一个优美的架构需要考虑的几个问题
  6. 线程间的协作(3)——管道输入/输出流
  7. D - 卿学姐与魔法
  8. java的自动类型转换和强制类型转换
  9. String Statistics(2008年珠海市ACM程序设计竞赛)
  10. Mysql数据库的分离和附加转