C Tutorial/Function/Recursive Function
Calculate factorials using recursion
<source lang="cpp">#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);
}</source>
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.
<source lang="cpp">#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));
}</source>
The value of addition is 5
Recursive fibonacci function
<source lang="cpp">#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 ); }
}</source>
Enter an integer: 3 Fibonacci( 3 ) = 2