recursion with cashed result, current step need to call previous recursion to initialize result for using