public static void solveTowers(int disks, int sourcePeg, int destinationPeg, int tempPeg)
{
//always set the base case in any type of recursion programs
if(disks == 1)
{
System.out.printf("\n%d --> %d", sourcePeg, destinationPeg);
return;
}
//call the method itself
solveTowers(disks - 1, sourcePeg, tempPeg, destinationPeg);
System.out.printf("\n%d --> %d", sourcePeg, destinationPeg);
solveTowers(disks - 1, tempPeg, destinationPeg, sourcePeg);
}
My question is what is the “return” for under the first System.out statement ?
When debugging, after the first solveTowers method reaches the base case, which the disk == 1,
it goes into the if statement, then after reach the return;, it goes to the second System.out statement, then following by the second solveTowers method, so question is why the return; skipped the first solveTowers but not the second one ?
The
returnstatement ends the execution of the function or method once it is reached.Since the return type of this method is
void, it does not need to return a value in order to end the function, and can be called simply like this :return;If the return type would have been different (for instance an integer), it would have to return an integer like this :
return 1;