Structure, definition, and goals.
In computing, recursion is a general problem-solving technique in which the solution to a problem with a given set of input values is defined in terms of solutions to the same problem with a reduced set of input values, or with input values that are smaller in magnitude. By re-invoking with progressively smaller inputs, until we reach some specified stopping condition, we can then incorporate the solutions to the smaller problems into the solutions to the larger problems, backtracking until we obtain the solution to the original problem.
In this exercise, you will complete methods that take recursive and iterative approaches to two well-known problems: computing the factorial function for an input value, and determining whether an input string is a palindrome. Since the primary aim of the exercise is to practice and compare and contrast recursive and iterative approaches, you will not be expected to write any unit tests. Instead, a number of tests are already provided for you; we encourage you to use these in a test-driven-development (TDD) fashion to inform your implementation.