thompson recursion