Recursive programs and recursive algorithms part 1