recursion working
add tail recursion
add tail recursion