0% found this document useful (0 votes)
11 views15 pages

5 Chapter 03 - Recursion+Other Topic

Uploaded by

ahmadonline57140
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views15 pages

5 Chapter 03 - Recursion+Other Topic

Uploaded by

ahmadonline57140
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 15

1

Chapter 3 - Functions
Outline
3.12 Recursion
3.13 Example Using Recursion:
3.14 Recursion vs. Iteration
3.15 Functions with Empty Parameter Lists

 2000 Prentice Hall, Inc. All rights reserved.


2

3.12 Recursion
• Recursive functions
– Are functions that call themselves
– Can only solve a base case
– If not base case, the function breaks the problem into a
slightly smaller, slightly simpler, problem that resembles the
original problem and
• Launches a new copy of itself to work on the smaller problem,
slowly converging towards the base case
• Makes a call to itself inside the return statement
– Eventually the base case gets solved and then that value
works its way back up to solve the whole problem

 2000 Prentice Hall, Inc. All rights reserved.


3

3.12 Recursion
• Example: factorial
n! = n * ( n – 1 ) * ( n – 2 ) * … * 1
5!=5*4*3*2*1=120
– Recursive relationship ( n! = n * ( n – 1 )! )
5! = 5 * 4!
4! = 4 * 3!…
– Base case (1! = 0! = 1)

 2000 Prentice Hall, Inc. All rights reserved.


Recursion

void print(int n)
{
if (n<1) return;
cout<<n;
print(n-1);
}

What would be the output of print(5)?


 2000 Prentice Hall, Inc. All rights reserved.
Recursion unrolled
What would be the output of print(5)?
print(5)
5 <1 ?
cout<<n;  5
print(4)
4 <1 ?
cout<<n;  4
print(3)
3 <1 ?
cout<<n;  3
print(2)
2<1 ?
cout<<n;  2
print(1)
1 <1 ?
cout<<n;  1
print(0)
0<1 0
return;

 2000 Prentice Hall, Inc. All rights reserved.


Recursion

void print(int n)
{
if (n<1) return;
print(n-1);
cout<<n;
}

What would be the output of print(5)?

 2000 Prentice Hall, Inc. All rights reserved.


void print(int n){

Recursion unrolled if (n<1) return;


print(n-1);

What would be the output of print(5)? }


cout<<n;

print(5)
5 <1 ?
print(4)
(4 <1) ?
print(3)
(3 <1) ?
print(2)
(2<1) ?
print(1)
(1 <1) ?
print(0)
0
(0 < 1) return
cout<<n;  1
cout<<n;  2
cout<<n;  3
cout<<n;  4
cout<<n;  5

 2000 Prentice Hall, Inc. All rights reserved.


Recursion
void print(int n)
{
if (n<1) {}
else
cout<<n;
print(n-1);
}

What would be the output of print(5)?


 2000 Prentice Hall, Inc. All rights reserved.
9

3.14 Recursion vs. Iteration


• Repetition
– Iteration: explicit loop
– Recursion: repeated function calls
• Termination
– Iteration: loop condition fails
– Recursion: base case recognized
• Both can have infinite loops
• Balance between performance (iteration) and good
software engineering (recursion)

 2000 Prentice Hall, Inc. All rights reserved.


10
3.15 Functions with Empty Parameter
Lists
• Empty parameter lists
– Either writing void or leaving a parameter list empty
indicates that the function takes no arguments
void print();
or
void print( void );
– Function print takes no arguments and returns no value

 2000 Prentice Hall, Inc. All rights reserved.


// Functions that take no arguments 11
Outline
#include <iostream.h> Notice the two ways of
void function1(); declaring no 1. Function
void function2( void ); arguments. prototypes (take
int main() no arguments)
{
2. Call the
function1();
functions
function2();
return 0; 3. Function
} definitions

void function1()
{
cout << "function1 takes no arguments" << endl;
}

void function2( void )


{
cout << "function2 also takes no arguments" << endl;
}
function1 takes no arguments
function2 also takes no arguments Program Output
 2000 Prentice Hall, Inc. All rights reserved.
12

3.20 Function Overloading


• Function overloading
– Having functions with same name and different parameters
– Should perform similar tasks ( i.e., a function to square
ints, and function to square floats).
int square( int x) {return x * x;}
float square(float x) { return x * x; }
==============================
int sum(int x, int y, intz)
float sum(float x, float y)

– Program chooses function by signature


• signature determined by function name and parameter types
– Can have the same return types

 2000 Prentice Hall, Inc. All rights reserved.


1 // Fig. 3.25: fig03_25.cpp 13
2 // Using overloaded functions Outline
3 #include <iostream>
4 Functions have same name but
different parameters 1. Define
5 using std::cout;
overloaded function
6 using std::endl;
7
8 int square( int x ) { return x * x; } 2. Call function
9
10 double square( double y ) { return y * y; }
11
12 int main()
13 {
14 cout << "The square of integer 7 is " << square( 7 )
15 << "\nThe square of double 7.5 is " << square( 7.5 )
16 << endl;
17
18 return 0;
19 }

The square of integer 7 is 49 Program Output


The square of double 7.5 is 56.25

 2000 Prentice Hall, Inc. All rights reserved.


14
3.19 Unary Scope Resolution
Operator
• Unary scope resolution operator (::)
– Access global variables if a local variable has same name
– not needed if names are different
– instead of variable use ::variable

 2000 Prentice Hall, Inc. All rights reserved.


15
// Fig. 3.24: fig03_24.cpp Outline
// Using the unary scope resolution operator
1. Define variables
#include <iostream.h>

#include <iomanip.h> 2. Print variables

const double PI = 3.14159265358979;


Notice the use of ::
int main()
{
const float PI = static_cast< float >( ::PI );
cout << setprecision( 20 )

cout << ::PI << endl;


return 0;
}

Program Output
Local float value of PI = 3.141592741012573242
Global double value of PI = 3.141592653589790007

 2000 Prentice Hall, Inc. All rights reserved.

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy