递归函数递归函数间接或者直接调用自己优点简洁理解容易缺点对递归深度有限制消耗资源大递归分两个过程往下调用分解的过程往上回溯综合的过程递归需要注意一定要有结束条件是以资源换取编写速度python对递归深度有限制超过限制报错# 递归函数深度限制代码x0deffun():globalx x1print(x)# 函数自己调用自己fun()fun()# RecursionError: maximum recursion depth exceeded while calling a Python object# func_a 表示计算阶乘# 利用数学公式deffunc_a(n):print(n)ifn1:return1returnn*func_a(n-1)rstfunc_a(5)print(f(5) ,rst)斐波那契额数列一列数字第一个值为1第二个值为1从第三个开始每个数字的值等于前两个数字出现的值的和。# 斐波那契额数列deffib(n):ifn1orn2:#公式 f(n) f(n-1) f(n-2) n3return1# f(n) 1, n {1,2}returnfib(n-1)fib(n-2)rstfib(10)print(rst ,rst)注解汉诺塔规则1每次只能移动一个盘子2任何一次移动三个塔的状态必须是小盒子在上大盒子在下# 汉诺塔aAbBcCdefhano(a,b,c,n):ifn1:print({}--{}.format(a,c))returnNoneifn2:print({}--{}.format(a,c))print({}--{}.format(a,b))print({}--{}.format(b,c))returnNonehano(a,c,b,n-1)print({}--{}.format(a,c))hano(b,a,c,n-1)hano(a,b,c,5)hano(a,b,c,5)输出结果
郑州网站建设
网页设计
企业官网