python函数之递归

版权声明:转载请附此链接https://blog.csdn.net/qq_42393859 https://blog.csdn.net/qq_42393859/article/details/83501046

递归:自己调用自己
无限递归:和死循环不一样
避免无限递归---递归收敛条件

递归应用于难题---思想(思路)
递归:效率低,占资源
能用递归的一定能用循环

解决阶乘:(把大问题拆分成小问题)解决大问题的思路和小问题思路完全一样,则可以是用递归的思想
def jc(n):
    if n==1:
        return 1
    return n*jc(n-1)
n=int(input('请输入一个整数:'))
print(jc(n))

# 斐波那契数列
def f(n):   # 前两项之和   ---第n项 ==(n-2)+(n-1)    1 1 2 3 5  3:4  1:4-2  2:4-1
    if n<3:
        return 1
    else:
        return f(n-2)+f(n-1)
for i in range(1,13):
    print(f(i))

汉诺塔问题

def h(cong,dao,jiezhu,n):
    if n==1:
        print('%s--->%s'%(cong,dao))
        return None
    else:
        #n-1从A--C+B
        h(cong,jiezhu,dao,n-1)
        #1个从A--B
        print('%s--->%s' % (cong, dao))
        #n-1从C--B+A
        h(jiezhu,dao,cong,n-1)
h('A','B','C',3)

猜你喜欢

转载自blog.csdn.net/qq_42393859/article/details/83501046