Python递归函数如何应用及详细解析?
- 内容介绍
- 文章标签
- 相关推荐
本文共计847个文字,预计阅读时间需要4分钟。
上期我们介绍了函数式编程,本期内容将聚焦于递归函数。本质上,递归函数遵循老规矩的方阵模式,为家长提供核心理解,内容通俗易懂,易于搭配实际应用,便于家长理解。关于递归:
百度解释:递归是一种编程技巧,函数通过调用自身来解决问题。
上期我们介绍了函数式编程,这期内容就是关于递归的函数内容,本期还是按照老规矩,给大家进行核心整理,内容通俗易懂,搭配实际应用,以供大家理解。
关于递归:
百度解释:是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现象。在计算机编程里,递归指的是一个过程:函数不断引用自身,直到引用的对象已知。使用递归解决问题,思路清晰,代码少。但是在主流高级语言中(如C语言、Pascal语言等)使用递归算法要耗用更多的栈空间,所以在堆栈尺寸受限制时(如嵌入式系统或者内核态编程),应避免采用。所有的递归算法都可以改写成与之等价的非递归算法。
总结理解:递归就是在函数内部调用自己的函数被称之为递归。
实例演示:
#直接调用自己:deffunc:print('fromfunc')func Func #间接调用自己deffoo:print('fromfoo')bar defbar:print('frombar')foo Foo #递归的实现:defage(n):ifn==1:return18returnage(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#n>1递归终止条件#age(1)=18#n=1等于终止条件
递归的回溯与递推
递推:像上边递归实现所拆解,递归每一次都是基于上一次进行下一次的执行,这叫递推。回溯:则是在遇到终止条件,则从最后往回返一级一级的把值返回来,这叫回溯。
#实例l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15,[16,[17,]],19]]]]]]] defsearch(l):foriteminl:iftype(item)islist:search(item)else:print(item) search(l)
阶乘实例代码:
deffact(n):ifn==1:return1returnn*fact(n-1)
上面就是一个实现阶层的递归函数,我们来试一试。
>>>fact(1)1>>>fact(5)120>>>fact(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*24 ===>120
斐波那契数列
deffib(n):ifn<2:returnnelse:returnfib(n-1)+fib(n-2)
汉诺塔
defhanoti(n,x1,x2,x3):if(n==1):print('move:',x1,'-->',x3)returnhanoti(n-1,x1,x3,x2)print('move:',x1,'-->',x3)hanoti(n-1,x2,x1,x3)
到此这篇关于python递归函数用法详解的文章就介绍到这了,更多相关python递归函数用法介绍内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!
本文共计847个文字,预计阅读时间需要4分钟。
上期我们介绍了函数式编程,本期内容将聚焦于递归函数。本质上,递归函数遵循老规矩的方阵模式,为家长提供核心理解,内容通俗易懂,易于搭配实际应用,便于家长理解。关于递归:
百度解释:递归是一种编程技巧,函数通过调用自身来解决问题。
上期我们介绍了函数式编程,这期内容就是关于递归的函数内容,本期还是按照老规矩,给大家进行核心整理,内容通俗易懂,搭配实际应用,以供大家理解。
关于递归:
百度解释:是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现象。在计算机编程里,递归指的是一个过程:函数不断引用自身,直到引用的对象已知。使用递归解决问题,思路清晰,代码少。但是在主流高级语言中(如C语言、Pascal语言等)使用递归算法要耗用更多的栈空间,所以在堆栈尺寸受限制时(如嵌入式系统或者内核态编程),应避免采用。所有的递归算法都可以改写成与之等价的非递归算法。
总结理解:递归就是在函数内部调用自己的函数被称之为递归。
实例演示:
#直接调用自己:deffunc:print('fromfunc')func Func #间接调用自己deffoo:print('fromfoo')bar defbar:print('frombar')foo Foo #递归的实现:defage(n):ifn==1:return18returnage(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#n>1递归终止条件#age(1)=18#n=1等于终止条件
递归的回溯与递推
递推:像上边递归实现所拆解,递归每一次都是基于上一次进行下一次的执行,这叫递推。回溯:则是在遇到终止条件,则从最后往回返一级一级的把值返回来,这叫回溯。
#实例l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15,[16,[17,]],19]]]]]]] defsearch(l):foriteminl:iftype(item)islist:search(item)else:print(item) search(l)
阶乘实例代码:
deffact(n):ifn==1:return1returnn*fact(n-1)
上面就是一个实现阶层的递归函数,我们来试一试。
>>>fact(1)1>>>fact(5)120>>>fact(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*24 ===>120
斐波那契数列
deffib(n):ifn<2:returnnelse:returnfib(n-1)+fib(n-2)
汉诺塔
defhanoti(n,x1,x2,x3):if(n==1):print('move:',x1,'-->',x3)returnhanoti(n-1,x1,x3,x2)print('move:',x1,'-->',x3)hanoti(n-1,x2,x1,x3)
到此这篇关于python递归函数用法详解的文章就介绍到这了,更多相关python递归函数用法介绍内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

