the results variable is at index and the values and this represents the return values of fib( and fib( to calculate the values of the fib(function for higher than we simply call the for loop appends the sum of the results[ - results[ - to the list of results divide and conquer this programming approach to problem-solving emphasizes the need to break down problem into smaller problems of the same type or form of the original problem these subproblems are solved and combined to solve the original problem the following three steps are associated with this kind of programming divide to divide means to break down an entity or problem herewe devise the means to break down the original problem into subproblems we can achieve this through iterative or recursive calls conquer it is impossible to continue to break the problems into subproblems indefinitely at some pointthe smallest indivisible problem will return solution once this happenswe can reverse our thought process and say that if we know the solution to the smallest problem possiblewe can obtain the final solution to the original problem merge to obtain the final solutionwe need to combine the smaller solutions to the smaller problems in order to solve the bigger problem there are other variants to the divide and conquer algorithmsuch as merge and combineand conquer and solve algorithms that make use of the divide and conquer principle include merge sortingquick sortand strassen' matrix multiplication we will go through an implementation of the merge sort as we started earlier in principles of algorithm design