Programming application CC213

Slides:



Advertisements
Similar presentations
Recursion.
Advertisements

Unit 181 Recursion Definition Recursive Methods Example 1 How does Recursion work? Example 2 Problems with Recursion Infinite Recursion Exercises.
Recursion CS-240/CS341. What is recursion? a function calls itself –direct recursion a function calls its invoker –indirect recursion f f1 f2.
ICS103 Programming in C Lecture 11: Recursive Functions
ICS103 Programming in C Lecture 9: Functions I
Topic 7 – Recursion (A Very Quick Look). CISC 105 – Topic 7 What is Recursion? A recursive function is a function that calls itself. Recursive functions.
 2003 Prentice Hall, Inc. All rights reserved. 1 Chapter 3 - Functions Outline 3.12Recursion 3.13Example Using Recursion: The Fibonacci Series 3.14Recursion.
Chapter 15 Recursive Algorithms. 2 Recursion Recursion is a programming technique in which a method can call itself to solve a problem A recursive definition.
CHAPTER 10 Recursion. 2 Recursive Thinking Recursion is a programming technique in which a method can call itself to solve a problem A recursive definition.
Recursion In general there are two approaches to writing repetitive algorithms. One uses loops(while, do while and for): the other uses recursion. Recursion.
A Review of Recursion Dr. Jicheng Fu Department of Computer Science University of Central Oklahoma.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 19 Recursion.
Chapter 14: Recursion Starting Out with C++ Early Objects
Copyright © 2011 Pearson Education, Inc. Starting Out with Java: Early Objects Fourth Edition by Tony Gaddis Chapter 14: Recursion.
Chapter 9: Recursion1 CHAPTER 9 RECURSION. Recursion  Concept of recursion  A recursive: Benefit and Cost  Comparison : Iterative and recursive functions.
M180: Data Structures & Algorithms in Java
Chapter 2 Recursion: The Mirrors. © 2005 Pearson Addison-Wesley. All rights reserved2-2 Recursive Solutions Recursion is an extremely powerful problem-
RecursionRecursion Recursion You should be able to identify the base case(s) and the general case in a recursive definition To be able to write a recursive.
Chapter 15 Recursion INTRODUCTION Recursion is a program-solving technique that expresses the solution of a problem in terms of the solutions of.
CIS 068 Welcome to CIS 068 ! Stacks and Recursion.
Reading – Chapter 10. Recursion The process of solving a problem by reducing it to smaller versions of itself Example: Sierpinski’s TriangleSierpinski’s.
Principles of Programming Chapter 11: Recursive Function  In this chapter, you will learn about  Recursion function 1 NI S1 2009/10.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Recursive Solutions Recursion is an extremely powerful problem-solving.
Recursion. Math Review Given the following sequence: a 1 = 1 a n = 2*a n-1 OR a n+1 = 2*a n What are the values of the following? a 2 = a 3 = a 4 =
Data Structures R e c u r s i o n. Recursive Thinking Recursion is a problem-solving approach that can be used to generate simple solutions to certain.
Chapter 5 – Functions II Outline Recursion Examples Using Recursion: The Fibonacci Series.
Instructor: Alexander Stoytchev CprE 185: Intro to Problem Solving (using C)
© 2011 Pearson Education, publishing as Addison-Wesley Chapter 8: Recursion Presentation slides for Java Software Solutions for AP* Computer Science 3rd.
R ECURRSION Prepared by Miss Simab Shahid Lecturer computer Science and Software Engineering department, University of Hail Chapter.
1 ICS103 Programming in C Lecture 9: Functions I.
JAVA: An Introduction to Problem Solving & Programming, 7 th Ed. By Walter Savitch ISBN © 2015 Pearson Education, Inc., Upper Saddle River,
1 Recursion Recursive function: a function that calls itself (directly or indirectly). Recursion is often a good alternative to iteration (loops). Its.
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Eighth Edition by Tony Gaddis,
Welcome to Recursion! Say what?!? Recursion is… the process of solving large problems by simplifying them into smaller ones. similar to processing using.
Lecture 11 Recursion. A recursive function is a function that calls itself either directly, or indirectly through another function; it is an alternative.
Chapter 9 Recursion. Copyright ©2004 Pearson Addison-Wesley. All rights reserved.10-2 Recursive Function recursive functionThe recursive function is –a.
Ms N Nashandi Dr SH Nggada Week 08 – Recursion. Outline We shall be covering the following What is a recursion? Iteration versus Recursion. Recursion.
Recursion Recursion is a fundamental programming technique that can provide an elegant solution certain kinds of problems © 2004 Pearson Addison-Wesley.
Recursion CENG 707.
Chapter Topics Chapter 16 discusses the following main topics:
Recursion The programs discussed so far have been structured as functions that invoke one another in a disciplined manner For some problems it is useful.
Chapter 15 Recursion.
CprE 185: Intro to Problem Solving (using C)
Chapter 10 Recursion Instructor: Yuksel / Demirer.
Recursion DRILL: Please take out your notes on Recursion
A Question How many people here don’t like recursion? Why not?
Chapter 15 Recursion.
More on Recursive Methods
Recursive Thinking Chapter 9 introduces the technique of recursive programming. As you have seen, recursive programming involves spotting smaller occurrences.
Recursion Chapter 10.
Announcements Final Exam on August 17th Wednesday at 16:00.
Recursive Thinking Chapter 9 introduces the technique of recursive programming. As you have seen, recursive programming involves spotting smaller occurrences.
Formatted and Unformatted Input/Output Functions
Control Structures Lecture 7.
Recursive functions.
Chapter 14: Recursion Starting Out with C++ Early Objects
Recursion "To understand recursion, one must first understand recursion." -Stephen Hawking.
Algorithm Analysis (for Divide-and-Conquer problems)
Recursion Chapter 11.
Chapter 14: Recursion Starting Out with C++ Early Objects
7.Recursion Recursion is the name given for expression anything in terms of itself. Recursive function is a function which calls itself until a particular.
Unit 3 Test: Friday.
Java Programming: Chapter 9: Recursion Second Edition
Dr. Sampath Jayarathna Cal Poly Pomona
Recursion.
Chapter 3 :Recursion © 2011 Pearson Addison-Wesley. All rights reserved.
ICS103 Programming in C Lecture 11: Recursive Functions
Self-Referencing Functions
ITEC324 Principle of CS III
Presentation transcript:

Programming application CC213 Week 09 –Recursion– Chapter 9

Outline Introducing Recursive Functions Format of recursive Functions Tracing Recursive Functions Examples Tracing using Recursive Trees

Introducing Recursive Functions In C, a function can call itself. Such types of functions are called recursive functions. A function, f, is also said to be recursive if it calls another function, g, which in turn calls f. Although it may sound strange for a function to call itself, it is in fact not so strange, as many mathematical functions are defined recursively. For example, the factorial function is defined mathematically as: n (n-1)! , n>1 1, n = 0 n! =

Although less efficient than iterative functions (using loops) due to overhead in function calls, in many cases, recursive functions provide a more natural and simple solutions. Thus, recursion is a powerful tool in problem solving and programming.

Introducing Recursive Functions ... Problems that can be solved using recursion have the following characteristics: One or more simple cases of the problem have a direct and easy answer – also called base cases. Example: 0! = 1. The other cases can be re-defined in terms of a similar but smaller problem - recursive cases. Example: n! = n (n-1)! By applying this re-definition process, each time the recursive cases will move closer and eventually reach the base case. Example: n!  (n-1)!  (n-2)!  . . . 1!, 0!. The strategy in recursive solutions is called divide-and-conquer. The idea is to keep reducing the problem size until it reduces to the simple case which has an obvious solution.

Format of recursive Functions Recursive functions generally involve an if statement with the following form: if this is a simple case solve it else redefine the problem using recursion The if branch is the base case, while the else branch is the recursive case. The recursive step provides the repetition needed for the solution and the base step provides the termination Note: For the recursion to terminate, the recursive case must be moving closer to the base case with each recursive call.

Example 1: Recursive Factorial The following shows the recursive and iterative versions of the factorial function: Iterative version int factorial (int n) { int i, product=1; for (i=n; i>1; --i) product=product * i; return product; } Recursive version int factorial (int n) { if (n == 0) return 1; else result = n * factorial (n-1); return result; } Recursive Call

The complete recursive multiply example /* Computes the factorial of a number */ #include <stdio.h> int factorial(int n); /* shows how to call a user-define function */ int main(void) { int num, fact; printf("Enter an integer between 0 and 7> "); scanf("%d", &num); if (num < 0) { printf("Factorial not defined for negative numbers\n"); } else if (num <= 7) fact = factorial(num); printf("The factorial of %d is %d\n", num, fact); } else printf("Number out of range: %d\n", num); } system("pause"); return (0); /* Computes n! for n greater than or equal to zero */ int factorial (int n) { if (n == 0) //base case return 1; else return n * factorial (n-1); //recursive case }

Tracing Recursive Functions Executing recursive algorithms goes through two phases: Expansion in which the recursive step is applied until hitting the base step “Substitution” in which the solution is constructed backwards starting with the base step factorial(4) = 4 * factorial (3) = 4 * (3 * factorial (2)) = 4 * (3 * (2 * factorial (1))) = 4 * (3 * (2 * (1 * factorial (0)))) = 4 * (3 * (2 * (1 * 1))) = 4 * (3 * (2 * 1)) = 4 * (3 * 2) = 4 * 6 = 24 Expansion phase Substitution phase

Example 2: Multiplication Suppose we wish to write a recursive function to multiply an integer m by another integer n using addition. [We can add, but we only know how to multiply by 1]. The best way to go about this is to formulate the solution by identifying the base case and the recursive case. The base case is if n is 1. The answer is m. The recursive case is: m*n = m + m (n-1). m + m (n-1), n>1 m, n = 1 m*n

Example 2: Multiplication … #include <stdio.h> int multiply(int m, int n); int main(void) { int num1, num2; printf("Enter two integer numbers to multiply: "); scanf("%d%d", &num1, &num2); printf("%d x %d = %d\n", num1, num2, multiply(num1, num2)); system("pause"); return 0; } int multiply(int m, int n) { if (n == 1) return m; /* simple case */ else return m + multiply(m, n - 1); /* recursive step */

Example 2: Multiplication … Expansion phase multiply(5,4) = 5 + multiply(5, 3) = 5 + (5 + multiply(5, 2)) = 5 + (5 + (5 + multiply(5, 1))) = 5 + (5 + (5 + 5)) = 5 + (5 + 10) = 5 + 15 = 20 Substitution phase

Example 3: Power function Suppose we wish to define our own power function that raise a double number to the power of a non-negative integer exponent. xn , n>=0. The base case is if n is 0. The answer is 1. The recursive case is: xn = x * xn-1. x * x n-1, n>0 1, n = 0 xn

Example 3: Power function … #include <stdio.h> double pow(double x, int n); int main(void) { double x; int n; printf("Enter double x and integer n to find pow(x,n): "); scanf("%lf%d", &x, &n); printf("pow(%f, %d) = %f\n", x, n, pow(x, n)); system("pause"); return 0; } double pow(double x, int n) { if (n == 0) return 1; /* simple case */ else return x * pow(x, n - 1); /* recursive step */

Example 3: Power… Expansion phase pow(2,4) = 2 * pow (2, 3) = 2 * (2 * pow (2, 2)) = 2 * (2 * (2 * pow (2, 1))) = 2 * (2 * (2 * (2 * pow (2, 0))) = 2 * (2 * (2 * (2 * 1))) = 2 * (2 * (2 * 2)) = 2 * (2 * 4) = 2 * 8 = 16 Substitution phase

Example 4: Fibonacci Function Suppose we wish to define a function to compute the nth term of the Fibonacci sequence. Fibonacci is a sequence of number that begins with the term 0 and 1 and has the property that each succeeding term is the sum of the two preceding terms: Thus, the sequence is: 0, 1, 1,2,3,5,8,13,21,34 …  Mathematically, the sequence can be defined as: fib(n-1) + fib(n-2) n>1 n, n = 0, 1 fib(n)

Example 4: Fibonacci Function … #include <stdio.h> int fib(int n); int main(void) { int n; printf("Enter an integer n to find the nth fibonacci term: "); scanf("%d", &n); printf("fibonacci(%d) = %d\n", n, fib(n)); system("pause"); return 0; } int fib(int n) { if (n == 0 || n== 1) return n; /* simple case */ else return fib(n-1) + fib(n-2); /* recursive step */

Tracing using Recursive Tree Another way to trace a recursive function is by drawing its recursive tree. This is usually better if the recursive case involves more than one recursive calls. Rrecursive tree of the Fibonacci function