0% found this document useful (0 votes)
33 views

Recursive Functions: 5.13 Recursion

Recursion is a process where a function calls itself repeatedly to solve a problem. It works by dividing the problem into smaller sub-problems until reaching a base case, which can be solved without further recursion. Each recursive call launches a new copy of the function to solve a sub-problem, with results eventually working back up to solve the original problem. Examples include computing factorials recursively and defining the Fibonacci series with a recursive formula.

Uploaded by

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

Recursive Functions: 5.13 Recursion

Recursion is a process where a function calls itself repeatedly to solve a problem. It works by dividing the problem into smaller sub-problems until reaching a base case, which can be solved without further recursion. Each recursive call launches a new copy of the function to solve a sub-problem, with results eventually working back up to solve the original problem. Examples include computing factorials recursively and defining the Fibonacci series with a recursive formula.

Uploaded by

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

5.

13 Recursion
Recursive functions
Function that calls itself
Can only solve a base case
Divides up problem into
What it can do
What it cannot do - resembles original problem
Launches a new copy of itself (recursion step)

Eventually base case gets solved


Gets plugged in, works its way up and solves whole problem

2000 Prentice Hall, Inc. All rights reserved.

5.13 Recursion (II)


Example: factorial:
5! = 5 * 4 * 3 * 2 * 1

Notice that
5! = 5 * 4!
4! = 4 * 3! ...
Can compute factorials recursively
Solve base case (1! = 0! = 1) then plug in
2! = 2 * 1! = 2 * 1 = 2;
3! = 3 * 2! = 3 * 2 = 6;

2000 Prentice Hall, Inc. All rights reserved.

5.14 Example Using Recursion: The


Fibonacci Series
Fibonacci series: 0, 1, 1, 2, 3, 5, 8...
Each number sum of the previous two
fib(n) = fib(n-1) + fib(n-2) - recursive formula
long fibonacci(long n)
{
if (n==0 || n==1) //base case
return n;
else return fibonacci(n-1) + fibonacci(n-2);
}

2000 Prentice Hall, Inc. All rights reserved.

5.14 Example Using Recursion: The


Fibonacci Series (II)
f( 3 )

return

return

f( 1 )

return 1

2000 Prentice Hall, Inc. All rights reserved.

f( 2 )

f( 0 )

return 0

f( 1 )

return 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

/* Fig. 5.15: fig05_15.c


Recursive fibonacci function */
#include <stdio.h>
long fibonacci( long );
int main()
{
long result, number;

printf( "Enter an integer: " );


scanf( "%ld", &number );
result = fibonacci( number );
printf( "Fibonacci( %ld ) = %ld\n", number, result );
return 0;
}

/* Recursive definition of function fibonacci */


long fibonacci( long n )
{
if ( n == 0 || n == 1 )
return n;
else
return fibonacci( n - 1 ) + fibonacci( n - 2 );
}

Enter an integer: 0
Fibonacci(0) = 0
Enter an integer: 1
Fibonacci(1) = 1
2000 Prentice Hall, Inc. All rights reserved.

Outline

Enter an integer: 2
Fibonacci(2) = 1

Outline

Enter an integer: 3
Fibonacci(3) = 2
Enter an integer: 4
Fibonacci(4) = 3
Enter an integer: 5
Fibonacci(5) = 5

Enter an integer: 6
Fibonacci(6) = 8
Enter an integer: 10
Fibonacci(10) = 55
Enter an integer: 20
Fibonacci(20) = 6765
Enter an integer: 30
Fibonacci(30) = 832040
Enter an integer: 35
Fibonacci(35) = 9227465

2000 Prentice Hall, Inc. All rights reserved.

Program Output

5.15 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
Choice between performance (iteration) and good software engineering
(recursion)

2000 Prentice Hall, Inc. All rights reserved.

You might also like