递归-python

利用递归函数来解决数学中的阶乘问题

 def fact(n):  
  2     if n== 0: 
  3         return 1
  4     else:     
  5         return n*fact(n-1)
  6               
  7

利用递归函数来解决汉诺塔问题

关于汉诺塔问题,代码很多人知道,甚至倒背如流

问题描述:把 A竿的盘全部移动到C竿上,并且顺序不能改变,每次只能移动一个盘子,并且要求在移动过程中始终保持这大盘在下小盘在上。

代码罗列:

def fact2(n,src,dst,mid):
 14     global count                                           
 15     if n ==1: 
 16         print("{}:{}->{}".format(1,src,dst))
 17         count += 1
 18     else:     
 19         fact2(n-1,src,mid,dst)
 20         print("{}:{}->{}".format(n,src,dst))
 21         count += 1
 22         fact2(n-1,mid,dst,src)

1、先从最简单的两个盘来说起

两个盘虽然简单,但多盘问题基本上都是围绕着两个盘的问题来开展的。

规律:

两个盘的移动可以只通过两根柱子之间来而完成,而不需要地三根柱子的辅助

需要注意的一点就是大家一定不要纠结与每个盘是怎么具体移动的,否则则会钻井牛角尖中。

递归

递归的实现是函数+分支语句

递归的过程就是递和归的过程

汉诺塔的最终简化移动过程就是

A->B将n-1个盘子移动到B

A->c将最大的盘移动到C

B->C将n-1个盘移动到C

笨鸟先飞
原文地址:https://www.cnblogs.com/zoutingrong/p/13627566.html