第二十八节,递归
递归的表现形式(此列不是递归只是说明递归的表现形式)
#递归的表现形式(此列不是递归只是说明递归的表现形式) def f1(): return "递归的表现形式" #f1函数里的功能,返回"递归的表现形式"字符串 def f2(): r = f1() #执行f1函数 return r #返回f1函数的结果 def f3(): r = f2() #执行f2函数 return r #返回f2函数的结果 def f4(): r = f3() #执行f3函数 return r #返回f3函数的结果 adc = f4() #执行f4函数 print(adc) #打印出 递归的表现形式 #递归就是嵌套式请求,向第一层请求,程序会自动一层一层的将请求信息传递到底层,然后将结果在一层一层的传递回来
初识递归
程序本身自己调用自己称之为递归,类似于俄罗斯套娃,体现在代码中:用户执行最外(N)层函数,最外侧调用N-1层函数,N-1层函数调用N-2层函数...
递归最简单原理
程序本身自己调用自己称之为递归,类似于俄罗斯套娃,体现在代码中:用户执行函数,而函数里又在执行函数本身,相当于写了一个死循环函数,一般都需要用一个判断来决定递归深度
#!/usr/bin/env python # -*- coding:utf-8 -*- def f(a): #自定义函数 f(a) #再次执行本身函数 f(1) #执行函数,触发函数循环
用递归写一个斐波那契数列,0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987
斐波那契数列每前两位相加等于第3位
#!/usr/bin/env python # -*- coding:utf-8 -*- #用递归写一个斐波那契数列 def f1(i, a, b): #自定义函数接收参数传值 print(a) #打印每次递归的a if i == 5: #判断每次递归的i是否等于5 return #如果i等于5就return返回,返回没写返回值就什么都不返回,只是结束函数代码块终止递归 c = a + b #将接收到的a加以b重新赋值给c r = f1(i + 1, b, c) #将接收到的i加以1,接收到的b,新赋值给c,当做参数在次执行传入函数本身进行递归 f1(1, 0, 1) #调用执行函数
只取一个递归次数的斐波那契数,也就是取递归某一次的斐波那契数
#!/usr/bin/env python # -*- coding:utf-8 -*- #只取一个递归次数的斐波那契数,也就是取递归某一次的斐波那契数 def f1(i, a, b): #自定义函数接收参数传值 if i == 5: #判断每次递归的i是否等于5 return a #如果i等于5就return返回a,结束函数代码块终止递归 c = a + b #将接收到的a加以b重新赋值给c r = f1(i + 1, b, c) #将接收到的i加以1,接收到的b,新赋值给c,当做参数在次执行传入函数本身进行递归 return r #接收满足条件后返回的a并且递归方式返回给上一次执行函数 sf = f1(1, 0, 1) #调用执行函数 print(sf) #打印出结果 3