0% found this document useful (0 votes)
165 views13 pages

Recursion: Prof. Nilesh Gambhava

The document discusses recursion in programming. It defines recursion as a function that calls itself, and provides examples of problems that can be solved recursively like factorials, Fibonacci series, decimal to binary conversion. It explains the key properties of recursion as having a base case condition to stop infinite recursion, and making progressive steps towards that base case. Code examples are given to find the factorial and Fibonacci series recursively as well as converting between decimal and binary numbers.

Uploaded by

Amogh Vaishnav
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)
165 views13 pages

Recursion: Prof. Nilesh Gambhava

The document discusses recursion in programming. It defines recursion as a function that calls itself, and provides examples of problems that can be solved recursively like factorials, Fibonacci series, decimal to binary conversion. It explains the key properties of recursion as having a base case condition to stop infinite recursion, and making progressive steps towards that base case. Code examples are given to find the factorial and Fibonacci series recursively as well as converting between decimal and binary numbers.

Uploaded by

Amogh Vaishnav
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/ 13

Programming for Problem Solving (PPS)

GTU # 3110003
USING

{C}
Recursion Programming

Prof. Nilesh Gambhava


Computer Engineering Department,
Darshan Institute of Engineering & Technology, Rajkot
What is Recursion?
 Any function which calls itself is called recursive function and such function calls are
called recursive calls.
 Recursion cannot be applied to all problems, but it is more useful for the tasks that
can be defined in terms of a similar subtask.
 It is idea of representing problem a with smaller problems.
 Any problem that can be solved recursively can be solved iteratively.
 When recursive function call itself, the memory for called function allocated and
different copy of the local variable is created for each function call.
 Some of the problem best suitable for recursion are
 Factorial
 Fibonacci
 Tower of Hanoi

Prof. Nilesh Gambhava #3110003 (PPS) – Recursion 2


Working of Recursive function
Working
void func1();

void main()
{
....
func1();
.... Function
} call

void func1()
{ Recursive
.... function call
func1();
....
}

Prof. Nilesh Gambhava #3110003 (PPS) – Recursion 3


Properties of Recursion
 A recursive function can go infinite like a loop. To avoid infinite running of
recursive function, there are two properties that a recursive function must have.
 Base Case or Base criteria 
 It allows the recursion algorithm to stop.
 A base case is typically a problem that is small enough to solve directly.
 Progressive approach
 A recursive algorithm must change its state in such a way that it moves forward to the base
case.

Prof. Nilesh Gambhava #3110003 (PPS) – Recursion 4


Recursion - factorial example
 The factorial of a integer n, is Recursive trace
product of
 n * (n-1) * (n-2) * …. * 1 Final Ans 5 *24 = 120
 Recursive definition of factorial Fact(5)
 n! = n * (n-1)! return 4 * 6 = 24
call
 Example
 3! = 3 * 2 * 1 Fact(4)
 3! = 3 * (2 * 1) return 3 * 2 = 6
call
 3! = 3 * (2!)
Fact(3)
return 2 * 1 = 2
call
Fact(2)
return 1
call
Fact(1)

Prof. Nilesh Gambhava #3110003 (PPS) – Recursion 5


WAP to find factorial of given number using Recursion
Program Output
1 #include <stdio.h> Enter the number? 5
2 int fact(int); factorial = 120
3 void main()
4 {
5 int n, f;
6 printf("Enter the number?\n");
7 scanf("%d", &n);
8 f = fact(n);
9 printf("factorial = %d", f);
10 }
11 int fact(int n)
12 {
13 if (n == 0)
14 return 1;
15 else if (n == 1)
16 return 1;
17 else
18 return n * fact(n - 1);
19 }

Prof. Nilesh Gambhava #3110003 (PPS) – Recursion 6


Recursion - Fibonacci example
 A series of numbers , where next Recursive trace
number is found by adding the two
number before it. Fib(4) Final Ans. 3

 Recursive definition of Fibonacci return 1


return 2
 Fib(0) = 0
 Fib(1) = 1 Fib(3) Fib(2)
 Fib(n) = Fib(n-1) + Fib(n-2)
return 1 return 1 return 0
 Example return 1
 Fib(4) = Fib(3) + Fib(2) Fib(2) Fib(1) Fib(1) Fib(0)
 Fib(4) = 3
return 1 return 0
Fib(1) Fib(0)

Prof. Nilesh Gambhava #3110003 (PPS) – Recursion 7


WAP to Display Fibonacci Sequence
Program Program contd.
1 #include <stdio.h> 15 int fibonacci(int n)
2 int fibonacci(int); 16 {
3 void main() 17 if (n == 0 || n == 1)
4 { 18 return n;
5 int n, m = 0, i; 19 else
6 printf("Enter Total terms\n"); 20 return (fibonacci(n - 1) +
7 scanf("%d", &n); fibonacci(n - 2));
8 printf("Fibonacci series\n"); 21 }
9 for (i = 1; i <= n; i++)
10 { Output
11 printf("%d ", fibonacci(m)); Enter Total terms                   
12 m++; 5  
13 } Fibonacci series        
14 } 0 1 1 2 3

Prof. Nilesh Gambhava #3110003 (PPS) – Recursion 8


Recursion - Decimal to Binary example
 To convert decimal to binary, divide Recursive trace
decimal number by 2 till dividend will
be less then 2 Final Ans 13%2 + 10*110 = 1101
 To convert decimal 13 to binary decToBin(13)
 13/2 = 6 reminder 1 return 6%2 + 10*11 = 110
call
 6/2 = 6 reminder 0
 3/2 = 3 reminder 1 decToBin(6)
 1/2 = 1 reminder 1 return 3%2 + 10*1 = 11
call
 Recursive definition of Decimal to decToBin(3)
Binary return 1%2 + 10*0 = 1
 decToBin(0) = 0 call
 decToBin(n) = n%2 + 10* decToBin(1)
decToBin(n/2) return 0
call
 Example
decToBin(0)
 decToBin(13) = 13%2 + 10 decToBin(6)
Prof.decToBin(13)
Nilesh Gambhava = 1101 #3110003 (PPS) – Recursion 9
WAP to Convert Decimal to Binary
Program Output
1 #include <stdio.h> Enter a decimal number: 12    
2 int convertDecimalToBinary(int); The binary equivalent = 1100 
3 void main()
4 {
5 int dec, bin;
6 printf("Enter a decimal number: ");
7 scanf("%d", &dec);
8 bin = convertDecimalToBinary(dec);
9 printf("The binary equivalent = %d \n",bin);
10 }
11 int convertDecimalToBinary(int dec)
12 {
13 if (dec == 0)
14 return 0;
15 else
16 return (dec % 2 + 10 *
convertDecimalToBinary(dec / 2));
17 }

Prof. Nilesh Gambhava #3110003 (PPS) – Recursion 10


WAP to Convert Binary to Decimal
Program Output
1 #include <stdio.h> Enter a binary number: 101    
2 int convertBinaryToDecimal(int b, int c, int t); Decimal value of 101 is 5 
3 void main()
4 {
5 unsigned int binary, decimal;
6 printf("Enter a binary number: ");
7 scanf("%d", &binary);
8 decimal = convertBinaryToDecimal(binary, 1, 0);
9 printf("Decimal value of %d is %d", binary, decimal);
10 }
11 int convertBinaryToDecimal(int b, int c, int t)
12 {
13 if (b > 0)
14 {
15 t += (b % 10) * c;
16 convertBinaryToDecimal(b / 10, c * 2, t);
17 }
18 else
19 return t;
20 }

Prof. Nilesh Gambhava #3110003 (PPS) – Recursion 11


Practice Programs
1) Write a program to find factorial of a given number using recursion. 
2) WAP to convert decimal number into binary using recursion.
3) WAP to use recursive calls to evaluate F(x) = x – x3/3! + x5/5! – x7/7! + … + xn/n!

Prof. Nilesh Gambhava #3110003 (PPS) – Recursion 12


Thank you

You might also like