/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: fibnacci.cpp
* 作 者:高古尊
* 完成日期:2013 年11 月25 日
* 版本号: v1.0
*
* 输入描述:要移动盘子的个数
* 问题描述:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。古代有一个梵塔,塔内有三个座
A、B、C,A 座上有64 个盘子,盘子大小不等,大的在下,小的在上。有一个和尚想把这64 个盘子从A
座移到C 座,但每次只能允许移动一个盘子,并且在移动过程中,3 个座上的盘子始终保持大盘在下,
小盘在上
* 程序输出:盘子的移动规律
* 问题分析:结合递归函数;
盘子的移动规律:先将n-1个盘子从A移动到C,再将1个盘子从A移动到B;再将n-1个盘子从C移动到A;再将1个盘子从B移动到C;最后将n-1个盘子从A移动到C
*/
#include <iostream>
using namespace std;
void pingyi(int);
void arcpingyi(int);
int main()
{
int n;
cin>>n;
pingyi(n);
return 0;
}
void pingyi(int n)
{
if(n==1)
{
cout<<"A→C\n";
return ;
}
else
{
pingyi(n-1);
cout<<"A→B\n";
arcpingyi(n-1);
cout<<"B→C\n";
pingyi(n-1);
return ;
}
}
void arcpingyi(int n)
{
if(n==1)
{
cout<<"C→A\n";
return ;
}
else
{
arcpingyi(n-1);
cout<<"C→B\n";
pingyi(n-1);
cout<<"B→A\n";
arcpingyi(n-1);
return ;
}
}
小结:return ;就是将以上全部过程返回。