怎么理解汉罗塔问题_教你轻松理解汉诺塔问题

汉诺塔的解决在程序里实际上是一个函数递归调用的过程。假设

A

上有

n

个盘子,求解的大

致想法是想把

A

最上面的

n-1

个盘子借助

C

挪到

B

,接着把

A

最下面的最大的盘子挪到

C

,再把

B

上的

n-1

个盘子借助

A

挪到

C

,完成。

首先先看

C#

里解决这个问题的代码:

using

System;

using

System.Collections.Generic;

using

System.Text;

namespace

Hanoi

{

class

Program

{

private

static

void

Move(

int

n,

char

A,

char

B,

char

C)

{

if

(n == 1)

{

Console

.WriteLine(

"Move disc:   {0}--->{1}"

, A, C);

return

;

}

Move(n-1, A, C, B);//

A

最上面的

n-1

个盘子借助

C

挪到

B

Console

.WriteLine(

"Move disc:   {0}--->{1}"

, A, C);//

A

最下面的最大的盘子挪到

C

Move(n-1, B, A, C);

//

B

上的

n-1

个盘子借助

A

挪到

C

}

static

void

Main(

string

[] args)

{

Console

.Write(

"

输入盘子数量

:"

);

int

n =

Convert

.ToInt16(

Console

.ReadLine());

Move(n,

'a'

,

'b'

,

'c'

);

Console

.Read();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值