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 #.
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 #.
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.
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).
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.
Then it reach the second “return” and proceed again until the whole program is over.
Yes, 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.
You should keep in mind that everytime a draw(n-1) is called, the current method is “paused” until this call return.
You are looking at a recursive method, as you can see with the line draw(n-1) inside the draw(n) method. You can search for “recursive function” on internet for a better understanding.
Basically, the method draw is called a first time n = a user input, but then this method call itself with n-1 until it reach 0. So you can think as if function draw(6) will call draw(5) and wait for it to return before continuing, draw(5) call draw(4), ect until draw(0) that return immediately.
So then the order of execution will be draw(1) that print " #\n" and return, then draw(2) will proceed to print “##\n” and return, then draw(3), ect until draw(n).
Work related project was a library for curves representation (polynomial, bezier, and a lot of other types) in C++. I liked working on it for several reasons. First one is that I could finally start something from scratch after years of working on legacy code. No dependency on strange old library from the team, only mainstream libraries.
But mostly it was because I learned a lot on this project. I had to mix template programming, heavy use of polymorphism, python bindings of the c++ and serialization together. I had experience in all of this stuff already, but mixing everything together bring a lot of new troubles and you have to understand how it works more in deep to be able to solve them.
I’m not making “famous” open source package with thousands of download and used everywhere, but seeing this package still in use in several other projects (and not only in my initial team) even after I left the initial team feels good. One day someone from my new company recommended to use “my” library as dependency to solve one of our problem, without knowing that I was the author, saying that it was a good well written lib. That’s a nice ego boost!
You already had good answers but I would like to add my two cents:
The “starter set” is the cheaper option (less than 20$). It has a small prewritten adventure, a set a prewritten characters of level 1 with backstory, and the basic rules you need for this adventure.
Good point for it: cheap, the bare minimum you need to dive directly in it, already contain an adventure so it’s easier for you as a new GM.
Bad point: it only contain a small subset of the rules, and will become “useless” if you decide to go further and buy the full books. Also, if your wife or kid do not like the pregen characters, you will not have the full rules related to character creation.
Then you have the core rule set already linked.
Good point: everything you need for a very long time, you will have all the rules to run anything you want. Other books are “only” going to add more options (spell, items, characters building options, ect).
Bad point: the price (120$), more information so it may be harder to digest everything and “get into it”. It does not contain pre written adventure. You will have to find one separate or make one yourself, there are some free options available.
On top of that you don’t need anything else exept pen and paper. Dice are of course greatly recommended, but you can start with some free phone app.