The code is a solution to the classical problem of the Towers of Hanoi. The goal of the problem is to move a stack of discs from one peg to another, with the following constraints:
The solution to this problem is implemented using recursion. The move
function takes in four parameters:
disc
: represents the number of discs in the stackfrom
: represents the peg where the stack of discs is locatedto
: represents the peg where the stack of discs will be moved toaux
: represents the auxiliary peg that can be used to temporarily store the discsThe function works by first moving the disc-1
stack to the aux
peg. Then, it prints the message “Disc disc
: move from from
to to
“. Finally, it moves the disc-1
stack from the aux
peg back to the to
peg.
The process continues until the disc
is equal to 0, at which point the recursion will stop.
In the main function, the move
function is called with the parameters 4
, "left"
, "middle"
, and "right"
. This means that the solution will start with a stack of 4 discs and move it from the left peg to the middle peg using the right peg as the auxiliary peg. The output will show the steps required to solve the Towers of Hanoi problem with 4 discs.
#include <iostream>
using namespace std;
void move(int disc,
string from,
string to,
string aux) {
if (disc > 0) {
move(disc - 1, from, aux, to);
cout << "Disc " << disc << ": move from " << from << " to " << to << endl;
move(disc - 1, aux, to, from);
}
}
int main() {
move(4, "left", "middle", "rigth");
return 0;
}
Disc 1: move from left to rigth
Disc 2: move from left to middle
Disc 1: move from rigth to middle
Disc 3: move from left to rigth
Disc 1: move from middle to left
Disc 2: move from middle to rigth
Disc 1: move from left to rigth
Disc 4: move from left to middle
Disc 1: move from rigth to middle
Disc 2: move from rigth to left
Disc 1: move from middle to left
Disc 3: move from rigth to middle
Disc 1: move from left to rigth
Disc 2: move from left to middle
Disc 1: move from rigth to middle