Recursive Functions Should Be Static

In typical cases recursive functions should be static, so that we don't accidentally take the state from the wrong instance of the object.

Having the function be static prevents it from accidentally grabbing an instance variable from an object at different level of recursion.