函数递归

匿名 (未验证) 提交于 2019-12-02 23:47:01

函数递归

1.递归概念

# 函数在调用阶段直接或间接的又调用自身 1.直接调用本身 def func(n):     print('from func',n)     func(n+1) func(1) 2.间接调用本身 def index():     print('from index')     login() def login():     print('from login')     index() login()

2.递归模块

 import sys  sys.getrecursionlimit()  # 查看递归的最大深度,显示1000,不是很精确,函数递归默认最大997、998  sys.setrecursionlimit(2000) #修改默认递归最大深度,传递数字必须大于最大值,但是没什么意思,函数不应该无限制的递归下去

3.递归的两个阶段

1.回溯:就是一次次重复的过程,这个重复的过程必须建立在每一次重复问题的复杂度都应该下降,直到有一个最终的结束条件 2.递推:一次次往回推导的过程
#例题: age(5)比age(4)大2,直到age(1)=18,求age(5)
 
def age(n):     if n == 1:  # 递归必须要有结束条件         return 18     return age(n-1) + 2  #每一个函数都有返回值,只是一直在往下传递,直到遇到age1停止传递,开始往回返回 res = age(5) print(res) 

4.递归应用

k = [1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,[12,[13,]]]]]]]]]]]]] 将列表中的数字依次打印出来(循环的层数是你必须要考虑的点)1.for循环可以么?

2.利用函数递归

 

递归函数不用考虑循环的次数 只需要把握结束的条件即可

 

 
 

 

k = [1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,[12,[13,]]]]]]]]]]]]] 将列表中的数字依次打印出来(循环的层数是你必须要考虑的点) for i in k:  推导思路     if type(i) is int:         print(i)     else:         for item in i:             if type(item) is int:                 print(item)             else:                 for j in item:                     if type(item) is int:                         print(item)                     else:   ... # 递归函数不要考虑循环的次数 只需要把握结束的条件即可 def get_num(l):     for i in l:         if type(i) is int:             print(i)         else:             get_num(i)  # get_num(l)
View Code

 

转载请标明出处:函数递归
文章来源: 函数递归
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!