コード例 #1
0
ファイル: hanoi.cpp プロジェクト: VBmgk/braco-robotico
  void move_discs(Pin &orig, Pin &dest, int num_discs) {
    // Stop case of recorrence
    if (num_discs == 1) {
      move_disc(orig, dest);
      return;
    }

    // Discover intermediate pin
    if (orig.pos() != PIN_A && dest.pos() != PIN_A) {
      move_discs(orig, p_a, num_discs - 1);
      move_disc(orig, dest);
      move_discs(p_a, dest, num_discs - 1);
    } else if (orig.pos() != PIN_B && dest.pos() != PIN_B) {
      move_discs(orig, p_b, num_discs - 1);
      move_disc(orig, dest);
      move_discs(p_b, dest, num_discs - 1);
    } else {
      move_discs(orig, p_c, num_discs - 1);
      move_disc(orig, dest);
      move_discs(p_c, dest, num_discs - 1);
    }
  }