汉诺塔的思考

众所周知的汉若塔问题是典型的递归问题。

基本思想是:如果要完成N个盘子的汉诺塔问题,首先思考如何完成N-1和盘子的汉若塔问题,为了便于思考,我们选择三个简单的汉诺塔问题进行设计。
to代表目标柱子,from代表原始柱子,depend代表借助的柱子


代码如下:
#include "stdafx.h"
#include<iostream>
#include<iomanip>
using namespace std;


void function3(int n, char from, char depend, char to)
{
 if (n == 1)
 {
  cout << "将盘子" << n << "从" << from << "塔----->" << to<< "塔" << endl;

 }
 else
 {
  function3(n - 1, from, to, depend);      //完成n-1借助于to柱子从初始柱子到中间借助柱子
  cout << "将盘子" << n << "从" << from << "塔----->" << to << "塔"<<endl;
  function3(n - 1, depend, from, to);      //完成n-1借助于from柱子从之间借助柱子到目标柱子
 }
  
}
int main()
{
 int n = 5;
 function3(n, 'a', 'b', 'c');
}


posted @ 2016-10-15 17:06  糖甜不粘牙  阅读(98)  评论(0编辑  收藏  举报