cs32s10dis4 - CS32: Introduction to Computer Science II...

Info iconThis preview shows pages 1–2. Sign up to view the full content.

View Full Document Right Arrow Icon
Discussion 1B Notes (Week 5, April 30) TA: Brian Choi (schoi@cs.ucla.edu ) Section Webpage: http://www.cs.ucla.edu/~schoi/cs32 Recursion A recursion is a function-writing technique where the function refers to itself . Assuming you have learned the concept of recursion sufficiently in the lecture, we’ll focus on the tricks in writing a recursive function. The Way to Think About Recursion Writing a recursive function involves the division of a problem into subproblems. A good example is the factorial function that computes n! = n x (n-1) x (n-2) x . .. x 2 x 1 for some arbitrary n 0 . Here is the iterative way of writing factorial : Iterative functions are more intuitive than recursive functions because we can see the whole process -- you see how factorial goes from 1 to n and multiply them up in that for loop. When writing the recursive version of the same function, you need not worry about “going from 1 to n .” Instead, we only worry about “going from n-1 to n ,” believing factorial(n-1) will return the right value. In factorial ’s case, if you know the value of factorial(n-1) , it is very easy to compute factorial(n) -- we only need to multiply n to the value of factorial(n-1) (because n * factorial(n-1) = n * {(n-1)*(n-2)*. ..*2*1} = factorial(n) ). This is what’s meant by “going from n-1 to n .” Translating this into a C++ code, we get the following function: My factorial function on the left simply assumes that factorial(n-1) returns what we want, and computes the value of factorial(n) based on this assumption. When factorial(n-1) is called, then it makes the same assumption and uses the value of factorial(n-2) to compute its value, . .. , and so on. For example, if factorial(5) is called, it relies on the value factorial(4) returns. When factorial(4) is called, it relies on the value factorial(3) returns. When
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Image of page 2
This is the end of the preview. Sign up to access the rest of the document.

This note was uploaded on 02/09/2012 for the course CS 32 taught by Professor Davidsmallberg during the Spring '08 term at UCLA.

Page1 / 6

cs32s10dis4 - CS32: Introduction to Computer Science II...

This preview shows document pages 1 - 2. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online