MCS 275 Spring 2021
Emily Dumas
Course bulletins:
In computer science, recursion refers to a method of solving a problem that depends on solving smaller versions of the same problem.
Usually, recursion involves a function calling itself.
n
) to the answer for a slightly smaller input (e.g. n-1
) and a bit of extra work.Recursive solutions are often contrasted with iterative solutions.
Recursive solutions can always be converted to iterative ones, often at the cost of more complex code.
A function that always calls itself will never finish!
Recursion must include some kind of stop condition---a case in which the function can directly return an answer instead of calling itself.
The classic first example of recursion, computing $$n! = n \times (n-1) \times \cdots \times 2 \times 1.$$
The argument to the function decreases with each subsequent call, so it eventually reaches the stop condition ($n \leq 1$).
The Fibonacci numbers are defined by $$F_0=0,\; F_1=1,\; \text{and }F_n = F_{n-1} + F_{n-2}$$
So the sequence begins $0,1,1,2,3,5,8,13,...$
The definition immediately suggests a recursive implementation.
Let $\oplus$ denote concatenation of binary sequences, so $0110 \oplus 11 = 011011$.
If $A$ is a binary sequence, let $\bar{A}$ denote the sequence with $0$ and $1$ switched, e.g. $\overline{11101} = 00010$
Finally, let $A^r$ denote the sequence in opposite order, e.g. $10010^r = 01001$.
$$PFS(n) = PFS(n-1) \oplus 1 \oplus \overline{PFS(n-1)^r}$$