Comment on Why does the for loop repeat in this recursion?
dneaves@lemmy.world 11 months ago
Why does the for loop repeat after it exits to print a new line? If it exits the loop, shouldn’t it be done with it?
There’s the new line after the for loop to make sure that the next recursion starts on a fresh line. Otherwise the next recursion would print on the same line, right where it left off, and you’d just have a line of “#”'s. The for loop itself is just for printing “#”'s.
Why is n incremented and not i as stated with i++?
I think this is a confusion with the recursion. Look at the line with draw(n - 1);
this happens before any printing of hashes happens, and only continues after its done. And it calls itself as long as it’s not less than or equal to 0. To psuedo-code the order of operations here:
draw 3 { draw 2 { draw 1 { draw 0 {}; print "#" * 1; }; print "#" * 2; }; print "#" *3; };
so n is never incremented as you think, it just calls decremented versions of the draw function before the current one finishes. The i’s are purely involved in the for loop, which only prints hashes. Does that make sense?
milon@lemm.ee 11 months ago
Yes - I finally caught that part about n as it’s just moving in reverse so it gets decremented. Now I’m not sure about i. In the debugger when the program gets to the for loop both n and i are equal to 1. The n I understand but i?
dneaves@lemmy.world 11 months ago
i starts at 0, checks if i is less than n (the first time it will be, no matter what), prints a “#”, then increments i by 1 and loops