Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
11 views

Lecture - Recursion and Mathematical Functions in C

The document discusses recursion and mathematical functions in C programming. It provides examples of using recursion to calculate factorial, sum of numbers, and Fibonacci series. It also discusses the base case and recursive case in recursion. Finally, it lists some common mathematical functions like pow, sqrt, fabs, floor, ceil available in the C math library and includes an example program using these functions.

Uploaded by

Home Tv
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)
11 views

Lecture - Recursion and Mathematical Functions in C

The document discusses recursion and mathematical functions in C programming. It provides examples of using recursion to calculate factorial, sum of numbers, and Fibonacci series. It also discusses the base case and recursive case in recursion. Finally, it lists some common mathematical functions like pow, sqrt, fabs, floor, ceil available in the C math library and includes an example program using these functions.

Uploaded by

Home Tv
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/ 25

CSE109

• Recursive function(or Recursion)


• Mathematical functions in C(<math.h> header
file)

©LPU CSE101 C Programming


Outline
• Recursion
• Examples of recursion
– Finding factorial of a number
– Finding sum of all numbers from 1 to n
– Printing n terms of Fibonacci series using
recursion
• Recursion Vs Iteration
• Mathematical functions in C

©LPU CSE101 C Programming


Recursion
• It is a process in which function calls itself again
and again and the function which is called is
known as recursive function
• Recursion is supported with two cases: base
case and recursive case
• Base case is one which helps to stop the
recursion once the required operation is done
• Recursive case is one which keeps on repeating
and function will keep on calling itself

©LPU CSE101 C Programming


Example
int fact(int n)
{
if (n < = 1) // base case( Here the recursion will stop)
return 1;
else
return n*fact(n-1); //recursive case where fact() is calling itself
}

©LPU CSE101 C Programming


Recursion example (factorial)

©LPU CSE101 C Programming


Program example 1-Write a program to find the factorial of a
number using recursion(or recursive function)
#include <stdio.h>
long long int factorial(int);
int main()
{
int n;
printf("Enter a positive integer: ");
scanf("%d", &n);
printf("Factorial of %d = %lld", n, factorial(n));
return 0;
}
long long int factorial(int n)
{
if (n <=1)
return 1;
else
return n*factorial(n-1);
}

©LPU CSE101 C Programming


Program example 2-Write a program to find the sum of all
numbers from 1 to n using recursion(or recursive function)

#include <stdio.h>
int addNumbers(int n);
int main()
{
int num;
printf("Enter a positive integer: ");
scanf("%d", &num);
printf("Sum = %d",addNumbers(num));
return 0;
}
int addNumbers(int n)
{
if(n == 0)
return n;
else
return n + addNumbers(n-1);
}

©LPU CSE101 C Programming


Recursion example-3 (Fibonacci series)
• What is Fibonacci series: …??
• 0, 1, 1, 2, 3, 5, 8...
– Each number is the sum of the previous two
– Can be solved recursively:
• fib( n ) = fib( n - 1 ) + fib( n – 2 )
– Code for the fibonacci function
long fibonacci( long n )
{
if (n == 0 || n == 1) // base case
return n;
else
return fibonacci( n - 1)+fibonacci( n – 2 );
}

©LPU CSE101 C Programming


Recursion example (fibonacci)
• Set of recursive calls to fibonacci() function

f( 3 )

return f( 2 ) + f( 1 )

return f( 1 ) + f( 0 ) return 1

return 1 return 0

©LPU CSE101 C Programming


Program example 3-WAP to display n terms of Fibonacci series using
recursion(or recursive function)
#include<stdio.h>
int Fibonacci(int);
int main()
{
int n, i;
printf("\n Enter number of terms you want to print:");
scanf("%d",&n);
printf("Fibonacci series\n");
for(i=0;i<n;i++)
{
printf("%d\n", Fibonacci(i));
}
return 0;
}
int Fibonacci(int n)
{
if ( n == 0 )
return 0;
else if ( n == 1 )
return 1;
else
return ( Fibonacci(n-1) + Fibonacci(n-2) );
}

©LPU CSE101 C Programming


Recursion vs. Iteration

©LPU CSE101 C Programming


Rules for recursive function
1. In recursion, it is essential to call a function itself
2. Only the user defined function can be involved in
the recursion. Library function cannot be
involved in recursion because their source code
cannot be viewed
3. A recursive function can be invoked by itself or
by other function.
4. To stop recursive function, it is necessary to have
a proper base case, otherwise infinite recursion
can happen
5. main() function can be invoked recursively.

©LPU CSE101 C Programming


Math Library Functions(or
Mathematical functions in C)
• Math library functions
– perform common mathematical calculations
– #include <math.h>
• Format for calling maths functions
– functionName( argument );
• If multiple arguments, use comma-separated list
• Example:
printf( "%.2f", sqrt( 900.0 ) );
• Calls function sqrt, which returns the square root of its argument
• All math functions return data type double
– Arguments may be constants, variables, or expressions

©LPU CSE101 C Programming


Math Library Functions

©LPU CSE101 C Programming


Math Library Functions: pow()
∙ The power function, pow(x,y), calculates xy; that is, the
value of
pow(x,y) = xy.
∙ pow(2,3)= 2³ = 8.0 and pow(2.5,3) = 15.625.
∙ The function pow is of the type double or that the function
pow returns a value of the type double.
∙ x and y are called the parameters (or arguments) of the
function pow.
∙ Function pow has two parameters.

©LPU CSE101 C Programming


sqrt()
∙ The square root function, sqrt(x),
calculates the non-negative square root of x for x >= 0.0
sqrt(2.25) is 1.5
sqrt(25) is 5.0
∙ The function sqrt is of the type double and has only one
parameter.

©LPU CSE101 C Programming


fabs()
• fabs calculates the absolute value of a float
argument.
fabs(2.25) is 2.25
fabs(-25.0) is 25.0
∙The function fabs is of the type double
and has only one parameter.

©LPU CSE101 C Programming


floor()
∙ The floor function, floor, calculates the largest
whole number that is not greater than x.
floor(48.79) is 48.0
floor(48.03) is 48.0
floor(47.79) is 47.0
∙ The function floor is of the type double and has
only one parameter.

©LPU CSE101 C Programming


ceil()
∙ The ceil function, ceil, calculates the smallest
whole number that is not less than x.
ceil(48.79) is 49
ceil(48.03) is 49
ceil(47.79) is 48
∙ The function ceil is of the type double and has
only one parameter.

©LPU CSE101 C Programming


©LPU CSE101 C Programming
Program example
#include<stdio.h>
#include<math.h>
int main()
{
double x=9.0,y=8.0,z=7.0;
printf("\nLog value is:%lf",log(x));
printf("\nLog value with base 10 is:%lf",log10(x));
printf("\nExponential value is:%lf",exp(x));
printf("\n Ceil value is:%lf",ceil(8.94));
printf("\n Floor value is:%lf",floor(2.34));
printf("\n Power:%lf",pow(3.0,2.0));
printf("\n Floating absolute is:%lf",fabs(-2.9));
printf("\n Square root value is:%lf",sqrt(9));
printf("\n Sin:%f,cos:%f,tan:%lf",sin(x),cos(y),tan(z));
printf("\n fMod:%f",fmod(2.0,1.5));
return 0;

©LPU CSE101 C Programming


Q1
What is the output of the following code?
void my_recursive_function(int n)
{
if(n == 0)
return;
printf("%d ",n);
my_recursive_function(n-1);
}
int main()
{
my_recursive_function(5);
return 0;
}
A. 5
B. 1
C. 543210
D. 54321

©LPU CSE101 C Programming


Q2
Predict output of following program
#include <stdio.h>
int fun(int n)
{
if (n == 4)
return n;
else return 2*fun(n+1);
}
int main()
{
printf("%d ", fun(2));
return 0;
}

A. 4
B. 8
C. 16
D. 10

©LPU CSE101 C Programming


Q3
Consider the following recursive function fun(x, y). What is
the value of fun(4, 3)
int fun(int x, int y)
{
if (x == 0)
return y;
return fun(x - 1, x + y);
}

A. 13
B. 12
C. 9
D. 10

©LPU CSE101 C Programming


Q4
What does the following function print for n = 25?
void fun(int n)
{
if (n == 0)
return;
printf("%d", n%2);
fun(n/2);
}

A. 11001
B. 10011
C. 11111
D. 00000

©LPU CSE101 C Programming

You might also like