title: Issues with Recursion using Python 3
body: <p>My question is about what python is doing while recursion works. I get the concept but it seems what's explicit in a loop is implicit in a recursive algorithm. I've seen examples where the recursion will loop through and then step back through to get the answer. Which I don't get. It's like code is happening that I didn't write.</p>
  
  <p>I can't help 'seeing' the return statement return an equation instead of <em>building</em> an equation and returning the answer.</p>
  
  <p>There are some examples of recursion that just make sense but the Fibonacci and factorial type algorithms are confusing. ( disclaimer: I don't want a lesson in fibonacci or factorials ^_^.)</p>
  
  <pre><code>def main():
      num = int(input("Please enter a non-negative integer.\n"))
      fact = factorial(num)
      print("The factorial of",num,"is",fact)
  
  def factorial(num):
      if num == 0:
          return 1
      else:
          return num * factorial(num - 1)
  
  main()
  </code></pre>
  
  <p>if we do !10 I can't help but think it should return the result of each of these equations and loop over that. I'm not sure how python is working through this in memory. Or how it knows that it needs to return the value of 10*9*8*7*6... etc</p>
  
  <p>instead of returning
  return 10 * (10 - 1) 
  return 9 * (9 - 1) 
  return 8 * (8 - 1)</p>
  
  <p>I know the return calls the function so it can't return anything... but what does it do with the value it already found without overwriting the variables and losing it's place?</p>
  
  <p>Is it staring me right in the face or is there something I just don't know?</p>