汉诺塔问题,看似复杂,但是如果用递归的思想去解决,就十分容易了。
假设有三个柱子x,y,z
①当只有一个圆盘时,直接将x移动到z上
②当有n个圆盘时,具体拆分为,将n-1个圆盘从x移动到y上,再将1个圆盘从x移动到z上,再将n-1
个圆盘从y移动到z上,此时x为空柱,用于辅助移动。n-1个圆盘的移动又可以具体拆分,如此递归下去。
//假设圆盘从上到下编号为1~n
void hano(int n,char x,char y, char z)
{
if(n==0) return
汉诺塔问题,看似复杂,但是如果用递归的思想去解决,就十分容易了。
假设有三个柱子x,y,z
①当只有一个圆盘时,直接将x移动到z上
②当有n个圆盘时,具体拆分为,将n-1个圆盘从x移动到y上,再将1个圆盘从x移动到z上,再将n-1
个圆盘从y移动到z上,此时x为空柱,用于辅助移动。n-1个圆盘的移动又可以具体拆分,如此递归下去。
//假设圆盘从上到下编号为1~n
void hano(int n,char x,char y, char z)
{
if(n==0) return