汉诺塔

/*
* 程序的版权和版本声明部分
* 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 ;就是将以上全部过程返回。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值