递归函数

递归函数:函数间接或者直接调用自己

递归分成2个过程:

1.往下调用,分解过程

2.往上回溯,综合过程

注意条件:递归一定要有结束条件,以资源换取编写速度

#九九乘法表
for i in range(1,10):
    for j in range(1, i + 1):
        print(i*j, end="  ")
    print()

tuple1 = ((1,2,3),('a','b','c'))  #单层循环
for i,j,k in tuple1:
    print(i,j,k)


def fun_a(n):  #求n阶乘
    print(n)
    if n == 1:
        return 1
    return n*fun_a(n-1)

print(fun_a(5))


def fun_b(n):  #斐波那契数列
    if n == 1 or n == 2:
        return  1
    return fun_b(n-1) + fun_b(n-2)

print(fun_b(10))


def hanno(a, b, c, n): #汉诺塔
    if n == 1:
        print("{}->{}".format(a,c))  #一个盘子移一次
        return None
    if n == 2:
        print("{}->{}".format(a,b))  #两个盘子移3次
        print("{}->{}".format(a,c))
        print("{}->{}".format(b,c))
        return None
    hanno(a,c,b,n-1)   #n个盘子,借助c盘子先把上面n-1个移到b盘
    print("{}->{}".format(a, c))
    hanno(b,a,c,n-1)  #b上n-1个盘子,再借助a盘子移到c上

print(hanno('A','B','C',3))

 

posted @ 2020-04-18 19:49  和而同  阅读(272)  评论(0编辑  收藏  举报