My apologies in advance if this is going to cause further confusion.  So, I wrote a very simple recursive method shown below. As you see line # 3 keeps track of value of n before recursive call and line # 5 keeps track of n after recursive call. As you can see both lines # 3 and 5 are printed to see the change in n value. I am puzzled why line 5 is printed in increments of one six times where n value goes from 0 to 5 as the unexpected (to me) output shows: after: n: 0 ... after: n: 5. 1    def countdown(n)2      return n if n == -13      p before: n: #{n} 4      countdown(n-1)5      p after: n: #{n}6    end78    countdown(5)Output:before: n: 5before: n: 4 before: n: 3before: n: 2before: n: 1before: n: 0after: n: 0after: n: 1after: n: 2after: n: 3after: n: 4after: n: 5
recursion code counting down and counting up
computability