C Tutorial/Function/Recursive Function
Calculate factorials using recursion
#include <stdio.h>
unsigned long factorial(unsigned long);
int main(void)
{
unsigned long number = 0L;
printf("\nEnter an integer value: ");
scanf(" %lu", &number);
printf("\nThe factorial of %lu is %lu\n", number, factorial(number));
return 0;
}
unsigned long factorial(unsigned long n)
{
if(n < 2L)
return n;
else
return n*factorial(n - 1L);
}
Recursion
- A recursive function is a function that calls itself.
- The speed of a recursive program is slower because of stack overheads.
- In recursive function we need to specify recursive conditions, terminating conditions, and recursive expressions.
#include <stdio.h>
int add(int k,int m);
main()
{
int k ,i,m;
m=2;
k=3;
i=add(k,m);
printf("The value of addition is %d\n",i);
}
int add(int pk,int pm)
{
if(pm==0)
return(pk);
else
return(1+add(pk,pm-1));
}
The value of addition is 5
Recursive fibonacci function
#include <stdio.h>
long fibonacci( long n );
int main()
{
long result;
long number;
printf( "Enter an integer: " );
scanf( "%ld", &number );
result = fibonacci( number );
printf( "Fibonacci( %ld ) = %ld\n", number, result );
return 0;
}
long fibonacci( long n )
{
if ( n == 0 || n == 1 ) {
return n;
}
else {
return fibonacci( n - 1 ) + fibonacci( n - 2 );
}
}
Enter an integer: 3 Fibonacci( 3 ) = 2