taoyx.log co"> day16 递归函数 - 11GX
首页 > day16 递归函数

day16 递归函数

一、递归 函数

   为什么要有函数,提高代码的可读性,避免重复的代码,提高代码的复用性

     在函数中能用return的不要print

1、递归的最大深度997

def foo(n):print(n)n+=1foo(n)
foo(1)
递归的最大深度

2、修改递归的最大深度

    由此我们可以看出,未报错之前能看到的最大数字就是997.

 当然了,997是python为了我们程序的内存优化所设定的一个默认值,

 我们当然还可以通过一些手段去修改它:

import sys
sys.setrecursionlimit(2000)
n=0
def func():global nn+=1print(n)func()
func()
# 1997
修改递归的最大深度

 3、递归的例子

例一:

现在你们问我,alex老师多大了?我说我不告诉你,但alex比 egon 大两岁。

你想知道alex多大,你是不是还得去问egon?egon说,我也不告诉你,但我比武sir大两岁。

你又问武sir,武sir也不告诉你,他说他比金鑫大两岁。

那你问金鑫,金鑫告诉你,他40了。。。

这个时候你是不是就知道了?alex多大

def age(n):if n==4:return 40else:return age(n+1)+2
print(age(1))
#46
年龄的递归

详细解析步骤:

 

4、总结:

   在一个函数里面调用自己,默认的递归最大限度是1000(不要修改递归的最大限度)

   往往递归都是和循环挂在一起的,人理解循环,神理解递归

 二、二分查找算法

def find_2(l,aim,start=0,end=None):if end==None:end=len(l)-1if start<=end:mid=(end-start)//2+startif l[mid]>aim:ret=find_2(l,aim,start,mid-1)return retelif l[mid]<aim:ret=find_2(l,aim,mid+1,end)return retelse:return aim,midelse:print("找不到这个值")
l=[2,3,4,5,6,7,8,9,10,11,12,13,14,15]
print(find_2(l,6))
二分查找算法

 

 

 

例题:

1、阶乘的算法 4*3*2*1

def f(n):  if n==1:return 1else:return n*f(n-1)
print(f(4))
阶乘的算法

2、斐波那契数列

# 1,1,2,3,4,5,8,13...
# n=10
def fib(n):if n==1 or n==2:return 1else:return fib(n-1)+fib(n-2)
print(fib(10))
斐波那契数列

3、三级菜单:

menu = {'北京':{'海淀':{'五道口':{'sogo':{},'网易':{},'google':{}},'中关村':{'爱奇艺':{},'汽车之家':{},'youku':{},},'上地':{'百度':{},},},'昌平':{'沙河':{'汇德商厦老男孩':{},'北航':{},},'天通苑':{},'回龙观':{},},'朝阳':{'朝阳大妈' },'东城':{},},'上海':{'闵行':{"人民广场":{'炸鸡店':{}}},'闸北':{'火车战':{'携程':{}}},'浦东':{},},'山东':{'高丽':{}},}
def meu_3(menu):while True:for key in menu:print(key)choice=input("选择:")if choice=="q" or choice=="b":return choiceelif choice in menu and menu[choice]:borq=meu_3(menu[choice])if borq=="q":return "q"
meu_3(menu)

  

 

转载于:https://www.cnblogs.com/number1994/p/7995111.html

更多相关:

  • /*判断屏幕宽高比是否为16:9*/ function isScreen16to9() {return window.screen.height / window.screen.width === 9 / 16; }...

  • /*关闭、刷新、跳转、离开当前网页前提示*/ onbeforeunload = function () {return false; };  ...

  • let json = {/**判断JSON格式*/ isJSON: function (str) {if (typeof str == "string") {try {var obj = JSON.parse(str);if (typeof obj == "object" && obj) {return true;} else {...

  •   项目结构   index.js //必须要安装否则就别想运行了❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤ //npm i body-parser -D & cnpm i express & cnpm i node-xlsx & cnp...

  • 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。 答案需要取模 1e9+7(100...

  •   最近一直在学习Deep Frist Search,也在leetcode上练习了不少题目。从最开始的懵懂,到现在遇到问题基本有了思路。依然清晰的记得今年2月份刚开始刷题的时做subsets的那个吃力劲,脑子就是转不过来到底该如何的递归,甚至试过使用debugger一步步的来看看堆栈到底是如何调用和返回的。经过了几个月的训练后,答题有...

  • #coding:utf-8'''Created on 2017年10月25日@author: li.liu'''import pymysqldb=pymysql.connect('localhost','root','root','test',charset='utf8')m=db.cursor()'''try:#a=raw_inpu...

  • python数据类型:int、string、float、boolean 可变变量:list 不可变变量:string、元组tuple 1.list list就是列表、array、数组 列表根据下标(0123)取值,下标也叫索引、角标、编号 new_stus =['刘德华','刘嘉玲','孙俪','范冰冰'] 最前面一个元素下标是0,最...

  • from pathlib import Path srcPath = Path(‘../src/‘) [x for x in srcPath.iterdir() if srcPath.is_dir()] 列出指定目录及子目录下的所有文件 from pathlib import Path srcPath = Path(‘../tenso...

  • 我在使用OpenResty编写lua代码时,需要使用到lua的正则表达式,其中pattern是这样的, --热水器设置时间 local s = '12:33' local pattern = "(20|21|22|23|[01][0-9]):([0-5][0-9])" local matched = string.match(s, "...

  • 在分析ats的访问日志时,我经常会遇到将一些特殊字段对齐显示的需求,网上调研了一下,发现使用column -t就可以轻松搞定,比如 找到ATS的access.log中的200响应时间过长的日志 cat access.log | grep ' 200 ' | awk -F '"' '{print $3}' > taoyx.log co...