''' # 递归函数 - 优点: _直接简洁 -缺点: _对递归有限制超过报错(100层)[设置递归最大层数 import sys sys.setrecursionlimit(设置递归的顶层)] _消耗资源大 ''' # 一个简单的递归 ''' X = 0 def fun(): """ * 要想好什么时候结束 此例列举的则是无限调用递归直至超过限制 """ global X X += 1 print(X) fun() fun() ''' #斐波那契额数列 #第一个数字是一,第二个数字也是一,从第三个开始,每一个数字等于前俩个数字相加的和 #公式为:f(1)=1,f(2)=1,f(n)=f(n-1)+f(n-2) 例如:1,1,2,3,5,8,13.... def fib(N): if N == 1: return 1 if N < 1: return 1 return fib(N-1)+fib(N-2) print(fib) ''' #一个阶乘 def fun(n): if n < 1: return 1 elif n == 1: return 1 else: return n * fun(n-1) result = int(input('请输入一个数:')) resopen = fun(result) print('%d的阶乘是:%d'% (result,resopen)) ''' #汉诺塔 """ X - 63 Y - 0 Z - 0 问题一:将X柱子上的62个盘子借助Z移动到Y上 问题二:将Y柱子上的62个盘子借助X移动到Z上 """ #M代表多少个盘子 X,Y,Z,分别代表柱子 def hnt(M,X,Y,Z): if M < 1: #非负数 return 1 elif M == 1: #如果留一个盘子将它移动到Z柱子上 print(X,' --> ',Z) else: hnt(M-1,X,Z,Y) #将除了最后一个盘子从X移动到Y上(M-1) print(X,' --> ',Z) hnt(M-1,Y,X,Z) M = int(input('请输入层数:')) hnt(M,'X','Y','Z')
递归的理解和例子
猜你喜欢
转载自blog.csdn.net/IF_Albert/article/details/80781907
今日推荐
周排行