figure series of recursive returns from adding list of numbers usually the data that represents our problem gets smaller in some way in the list_sum algorithm our primary data structure is listso we must focus our state-changing efforts on the list since the base case is list of length natural progression toward the base case is to shorten the list this is exactly what happens on line of the code below when we call list_sum with shorter list the final law is that the algorithm must call itself this is the very definition of recursion recursion is confusing concept to many beginning programmers as novice programmeryou have learned that functions are good because you can take large problem and break it up into smaller problems the smaller problems can be solved by writing function to solve each problem when we talk about recursion it may seem that we are talking ourselves in circles we have problem to solve with functionbut that function solves the problem by calling itselfbut the logic is not circular at allthe logic of recursion is an elegant expression of solving problem by breaking it down into smaller and easier problems in the remainder of this we will look at more examples of recursion in each case we will focus on designing solution to problem by using the three laws of recursion self check how many recursive calls are made when computing the sum of the list [ ] recursion