版权声明:转载请附此链接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)