recursion assignment