python_入门_第九天

递归

相比较而言迭代运行速度快递归简单
# 斐波那契数列——递归版
def fab(n):
    if n == 1 or n == 2:
        return 1
    else:
        return fab(n-1)+fab(n-2)
print(fab(35))
>>> 9227465
# 斐波那契数列——迭代版
def fab(n):
    a1 =0
    a = 0
    for i in range(n):
        a2 = a1
        a1 = a
        if i == 0:
            a = 1
        elif i == 1:
            a = 1
        else:
            a = a2 + a1
    return a
print(fab(5))

递归解决汉诺塔

def fun(n,x,y,z):
    print(x,y,z)
    if n == 1:
        print(x,' -> ',z)
    else:
        fun(n-1,x,z,y)
        print(x,' -> ',z)
        fun(n-1,y,x,z)
n=2 #层数
fun(n,'x','y','z')

猜你喜欢

转载自blog.csdn.net/m0_37416991/article/details/81177858