the arguments to dotowers(are the number of disks to be movedand the source (from)intermediate (inter)and destination (totowers to be used the number of disks decreases by each time the method calls itself the sourceintermediateand destination towers also change here is the output with additional notations that show when the method is entered and when it returnsits argumentsand whether disk is moved because it' the base case ( subtree consisting of only one diskor because it' the remaining bottom disk after subtree has been movedenter ( disks) =ai=bd= enter ( disks) =ai=cd= enter ( disk) =ai=bd= base casemove disk from to return ( diskmove bottom disk from to enter ( disk) =ci=ad= base casemove disk from to return ( diskreturn ( disksmove bottom disk from to enter ( disks) =bi=ad= enter ( disk) =bi=cd= base casemove disk from to return ( diskmove bottom disk from to enter ( disk) =ai=bd= base casemove disk from to return ( diskreturn ( disksreturn ( disksif you study this output along with the source code for dotower()it should become clear exactly how the method works it' amazing that such small amount of code can solve such seemingly complicated problem mergesort our final example of recursion is the mergesort this is much more efficient sorting technique than those we saw in "simple sorting,at least in terms of speed while the bubbleinsertionand selection sorts take ( timethe mergesort is ( *lognthe graph in figure (in shows how much faster this is for exampleif (the number of items to be sortedis , then is