reverse in place and recurse