Source: http://homepage.divms.uiowa.edu/~hzhang/c31/notes/recursion.pdf