第二十八节,递归

递归的表现形式(此列不是递归只是说明递归的表现形式)
#递归的表现形式(此列不是递归只是说明递归的表现形式)
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

 
 
原文地址:https://www.cnblogs.com/adc8868/p/5712648.html