r/learnpython • u/Key_Cloud_7002 • 13h ago
recursion problem
I'm trying to teach myself python using John Zelles book. On the 13th chapter it gives this example of recursion I'm trying to understand:
def moveTower(n, source, dest, temp):
if n ==1:
print("move disk from , " , source , "to", dest)
else:
moveTower(n-1, source, temp, dest)
moveTower(1, source, dest,temp)
moveTower(n-1,temp,dest,source)
def hanoi(n):
moveTower(n , "a", "c","b")
hanoi(3)
The code is first assiging the variables A to source then C to dest then b to temp but do the lines moveTower(n-1, source, temp, dest) and moveTower(n-1,temp,dest,source) work? Would it be moveTower(3-1, a,b,c)? How exactly are they outputting a to c then a to b then c to b and b to a , etc...
1
Upvotes
5
u/socal_nerdtastic 13h ago edited 12h ago
Drop this code into pythontutor.com or another visualizer where you can see the code execution step by step.
I'm not really understanding where you are stuck, but a common hangup is that people don't realize that making a recursive call invokes a whole new copy of the function. So when you call moveTower from inside moveTower, python makes a whole new copy of the moveTower function and that will run completely independently from the first one.