Storage and Recursion
Concept of Storage
The storage class of a variable determines its scope, storage duration, and linkage. A storage class in C is used to describe the following things:
- The variable scope
- The location where the variable will be stored
- Initialized value of a variable
- A lifetime of a variable
There are four storage classes in the C language:
- Automatic
- External
- Static
- Register
List of storage classes and the keyword
Storage Classes | Keyword |
---|---|
Automatic | auto |
External | extern |
Static | static |
Register | register |
Automatic Storage Class
All variables are declared within a function body. It has a features like:
- Automatic variables are truly local.
- They are unknown to other functions.
- When the function is exited, the values of automatic variables are not retained.
- They are normally implemented using a stack.
- They are recreated each time the function is called.
- It’s an optional to put the class specifier auto while declaring automatic variable.
#include<stdio.h>
#include<conio.h>
void main()
{
auto int a,b;
clrscr();
printf("The value of a= %d and b=%d", a,b);
getch();
}
Output:
The value of a = -28762 and b = 12803
External Storage Class (Global variable)
Variables are declared outside function. It has features like:
- They are declared outisde the function.
- All functions in the program can access and modify global variables.
- The life-time of the variable is as long as the program’s execution does not come to an end.
- The default initial value for this variable is zero.
- An external variable must begin with the class specifier extern.
#include<stdio.h>
#include <conio.h>
extern int a=5, b=6;
int sum()
{
int s;
s= a+b;
return(s);
}
void main()
{
clrscr();
printf("The sum is %d", sum());
getch();
}
Output:
The sum is 11
Concept of Recursion
The process in which a function calls itself is called recursion and the corresponding function is called a recursive function.
C program to input a number and calculate its factorial using recursive function.
#include<stdio.h>
#include<conio.h>
int factorial (int);
void main()
{
int n, fact;
printf("Input a number:");
scanf("%d", &n);
fact=factorial(n);
printf("The factorial of %d is %d", n, fact);
getch();
}
int factorial(int n)
{
if(n==0 || n==1) return 1;
else
return (n*factorial(n-1));
}
Output:
Input a number: 5
The factorial of 5 is 120
A program to calculate the nth term of a Fibonacci series using recursive function.
#include<stdio.h>
#include<conio.h>
int fibo(int);
void main()
{
int n, fact;
printf("Input the value of n:");
scanf("%d", &n);
fact=fibo(n);
printf("The value of nth term= %d",fact);
getch();
}
fibo(int n)
{
if(n==1)
return(0);
else if(n==2)
return(1);
else
return(fibo(n-1)+fibo(n-2));
}
Output:
Input the value of n: 7
The value of nth term=8