エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

ハノイの塔メモ2

func(x,0,2)
{
 if(x > 1) {
  func(x-1,0,2)
 } 
 move(0,2)
}

func(自分の値, 移動元の場所、移動先の場所、その他の場所)

やりたい動き

1個
(1, 0->2)

2個
func(2, 0, 2)
(1, 0->1)  
(2, 0->2)  
(1, 1->2)  

3個
func(2, 0, 1)
(1, 0->2)
(2, 0->1)
(1, 2->1)

func(3, 0, 2)
(3, 0->2)

func(2, 1, 2)
(1, 1->0)
(2, 1->2)
(1, 0->2)

もし一番下ならゴールへ。そうでなければ、2をゴール以外に。

func(a, x, y, z)
{
 if(x > 1) {
  func(a-1, x, z, y)
 }
 move(x,y)
 if(a != 1) {
  move(z, y);
 }
}