iteration
do some recursion