Download presentation
Presentation is loading. Please wait.
Published byColin Green Modified over 9 years ago
1
Principles of Programming - NI2005 1 Simple Recursion Recursion is where a function calls itself. Concept of recursive function: A recursive function is called to solve a problem The function only knows how to solve the simplest case of the problem. When the simplest case is given as an input, the function will immediately return with an answer. However, if a more complex input is given, a recursive function will divide the problem into 2 pieces: a part that it knows how to solve and another part that it does not know how to solve.
2
Principles of Programming - NI2005 2 Simple Recursion cont… The part that it does not know how to solve always resembles the original problem, but of a slightly simpler version. Therefore, the function calls itself to solve this simpler piece of problem that it does now know how to solve. This is called the recursion step. The recursion step is done until the problem converges to become the simplest case. This simplest case will be solved by the function which will then return the answer to the previous copy of the function. The sequence of returns will then go all the way up until the original call of the function finally return the result.
3
Principles of Programming - NI2005 3 Simple Recursion cont… Any problem that can be solved recursively can also be solved iteratively (using loop). Recursive functions are slow and takes a lot of memory space compared to iterative functions So why bother with recursion? There are 2 reasons: Recursion approach more naturally resembles the problem and therefore the program is easier to understand and debug. Iterative solution might not be apparent.
4
Principles of Programming - NI2005 4 Example 1 - x y In this example, we want to calculate x to the power of y (i.e. x y ) If we analyze the formula for x y, we could see that x y could be written as (x being multiplied to itself, y times). An example is 2 4, which can be written as 2 4 = 2 x 2 x 2 x 2 (in this case, x = 2, y = 4) 2 4 could also be rewritten as 2 4 = 2 1 x 2 3 where 2 1 = 2 (i.e the number itself) Therefore, we could divide the problem into two stage: Simplest case: when y = 1, the answer is x Recursive case, we need to solve for x * x (y-1)
5
Principles of Programming - NI2005 5 Example 1 - x y #include double XpowerY(double,int); void main(void) { double power, x; int y; printf("Enter the value of x and y:"); scanf("%lf%d",&x,&y); power = XpowerY(x,y); printf("%.2f to the power of %d is %.2f\n\n",x,y,power); }
6
Principles of Programming - NI2005 6 Example 1 - x y double XpowerY(double x, int y) { if (y ==1 ) return x; else return x * XpowerY(x, y-1); } Sample Output: Enter the value of x and y: 2 3 2.0 to the power of 3 is 8.00
7
Principles of Programming - NI2005 7 Example 2 - Factorial Analysis: n!= n * (n-1) * (n-2) * (n-3) * (n-4) ……… * 1 n! could be rewritten as n * (n-1)! Example: 5! = 5 * 4 * 3 * 2 * 1 = 5 * (4)!, where n = 5 Fact: 0! Or 1! is equal to 1 Therefore, we could divide this problem into two stages for n!: Simplest case: if (n <= 1), answer is 1 Recursive case: we need to solve for n * (n-1)!
8
Principles of Programming - NI2005 8 Example 2 - Factorial #include double fact(double); void main(void) { double n, result; printf("Please enter the value of n:"); scanf("%lf",&n); result = fact(n); printf(" %.f! = %.2f\n\n",n,result); }
9
Principles of Programming - NI2005 9 Example 2 - Factorial double fact(double n) { if (n <= 1) return 1; else return n * fact(n-1); } Sample Output: Please enter the value of n: 3 3! = 6.00
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.