做营销型网站,百度问答我要提问,东莞通,网站开发怎么样上期我们介绍了函数式编程#xff0c;这期内容就是关于递归的函数内容#xff0c;本期还是按照老规矩#xff0c;给大家进行核心整理#xff0c;内容通俗易懂#xff0c;搭配实际应用#xff0c;以供大家理解。
关于递归#xff1a;
百度解释#xff1a;是指函数/过程/…上期我们介绍了函数式编程这期内容就是关于递归的函数内容本期还是按照老规矩给大家进行核心整理内容通俗易懂搭配实际应用以供大家理解。
关于递归
百度解释是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现象。在计算机编程里递归指的是一个过程函数不断引用自身直到引用的对象已知。使用递归解决问题思路清晰代码少。但是在主流高级语言中如C语言、Pascal语言等使用递归算法要耗用更多的栈空间所以在堆栈尺寸受限制时如嵌入式系统或者内核态编程应避免采用。所有的递归算法都可以改写成与之等价的非递归算法。
总结理解递归就是在函数内部调用自己的函数被称之为递归。
实例演示
#直接调用自己def func: print(from func) func
Func
#间接调用自己def foo: print(from foo) bar
def bar: print(from bar) foo
Foo
#递归的实现def age(n): if n 1: return 18 return age(n-1)2
print(age(5))
# age(5)age(4)2 第一次进入# age(4)age(3)2 第二次进入# age(3)age(2)2 第三次进入# age(2)age(1)2 第四次进入# age(1)18 第五次进入最后判断终止条件
# age(n)age(n-1)2 #n1 递归终止条件# age(1)18 #n1 等于终止条件
递归的回溯与递推
递推像上边递归实现所拆解递归每一次都是基于上一次进行下一次的执行这叫递推。回溯则是在遇到终止条件则从最后往回返一级一级的把值返回来这叫回溯。
# 实例l [1, 2, [3, [4, 5, 6, [7, 8, [9, 10, [11, 12, 13, [14, 15,[16,[17,]],19]]]]]]]
def search(l): for item in l: if type(item) is list: search(item) else: print(item)
search(l)
阶乘实例代码
def fact(n): if n1: return 1 return n * fact(n -1)
上面就是一个实现阶层的递归函数我们来试一试。fact(1)1 fact(5)120fact(100)93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
来看一看计算过程fact(5)5 * fact(4)5 * (4 * fact(3))5 * (4 * (3 * fact(2)))5 * (4 * (3 * (2 * fact(1))))5 * (4 * (3 * (2 * 1)))5 * (4 * (3 * 2))5 * (4 * 6)5 * 24120
斐波那契数列
def fib(n): if n 2: return n else: return fib(n -1) fib(n -2)
汉诺塔
def hanoti(n,x1,x2,x3): if(n 1): print(move:,x1,--,x3) return hanoti(n-1,x1,x3,x2) print(move:,x1,--,x3) hanoti(n-1,x2,x1,x3)
到此这篇关于python递归函数用法详解的文章就介绍到这了,更多相关python递归函数用法介绍内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们
本文标题: python递归函数用法详解
本文地址: http://www.cppcns.com/jiaoben/python/357821.html