Tail recursion is when the recursive call is last in a function; this algorithm uses breadth-first search to simultaneously 1. search the space of inputs and outputs 2. find the smallest set out of outputs to reach a reward. Again, tail recursion is completely irrelevant.