Comment on Why does the for loop repeat in this recursion?
Merwyn@sh.itjust.works 10 months agoYes, as I wrote when the method draw(n=1) finish the for loop that print one “#”, this call of the method draw return. Then the process start again from the after the line draw(n-1) of the method draw(n=2), which execute the for loop to print “##” and return. Then again you come back to after the line draw(n-1) of inside the method draw(n=3), ect.
milon@lemm.ee 10 months ago
I see. I guess my understanding was that the recursion was over after the recursive call, but it’s actually for all the code in draw().
Merwyn@sh.itjust.works 10 months ago
Yes, to better understand this you have to understand the “flow” of the program. Meaning the order at which the instructions are executed and not written.
Image
Here you have the flow of the program starting from n =3 until the recursion reach draw(0), note that none of the for loop have been executed yet. At this point it reach the first “return” instruction and go finish the call to draw(0).
Image
Then the flow go back to where it previously was: inside the draw(1) call just after the line calling draw(0). And it start executing the next lines of the draw(1): the for loop.
Image
Then it reach the second “return” and proceed again until the whole program is over.
milon@lemm.ee 10 months ago
Yes, that helps. Thanks. I see now how n goes from 1 to 2 to 3…etc. Now not so sure how i = 1 when the for loop starts.
Merwyn@sh.itjust.works 10 months ago
When called with n=1 ? It’s from i=0 to i<1, so it will do only one iteration with i=0 and print one #.