Tuesday, 20 June 2023

C Programming Chapter 8 Recursion

 

Recursion in C

 

Write a C program to find sum of first n natural numbers using recursion. Note: Positive integers are known as natural number i.e. 1, 2, 3....n

 

 

#include <stdio.h>

int sum(int n);

int main()

{

int num,add;

printf("Enter a positive integer:\n");

scanf("%d",&num);

add=sum(num);

printf("sum=%d",add);

getch();

}

 

int sum(int n)

{

if(n==0)

return n;

else

return n+sum(n-1);    /*self call  to function sum() */

}

 

Output:

Enter a positive integer:

5

15

 

Explanation:

 

For better visualization of recursion in this example:

sum(5)
=5+sum(4)
=5+4+sum(3)
=5+4+3+sum(2)
=5+4+3+2+sum(1)
=5+4+3+2+1+sum(0)
=5+4+3+2+1+0
=5+4+3+2+1
=5+4+3+3
=5+4+6
=5+10
=15

 

 

/*
 * C Program to find the nth number in Fibonacci series using recursion
 */
 
#include <stdio.h>
int fibo(int);
 
int main()
{
int num;
int result;
 
printf("Enter the nth number in fibonacci series: ");
scanf("%d",&num);
if(num <0)
   {
   printf("Fibonacci of negative number is not possible.\n");
   }
else
   {
   result=fibo(num);
   printf("The %d number in fibonacci series is %d\n", num, result);
   }
   getch();
               return 0;
}
 
int fibo(int num)
{
   if(num ==0)
                   {
                   return0;
                   }
   else if(num ==1)
                   {
                   return 1;
                   }
   else
                   {
                   return(fibo(num-1)+fibo(num-2));
                   }
}

Output:

Enter the nth number in fibonacci series: 8
The 8 number in fibonacci series is 21
 
 
Enter the nth number in fibonacci series: 12
The 12 number in fibonacci series is 144
/*
 * C Program To Find The Biggest Number In An Array Of Numbers Using 
 * Recursion
 */
 
#include <stdio.h>
 
int large(int[],int,int);
 
int main()
{
int size;
int largest;
int list[20];
int i;
 
printf("Enter size of the list:");
scanf("%d",&size);
printf("Printing the list:\n");
for(i =0; i < size ; i++)
   {
   list[i]=rand()% size;
   printf("%d\t", list[i]);
   }
if(size ==0)
   {
   printf("Empty list\n");
   }
else
   {
   largest= list[0];
   largest= large(list, size -1, largest);
   printf("\nThe largest number in the list is: %d\n", largest);
   }
getch();
}
 
int large(int list[],int size,int largest)
   {
   if(size ==1)
   return largest;
 
   if(size >-1)
   {
                   if(list[size]> largest)
                   {
                   largest= list[size];
                   }
   return(largest = large(list, size -1, largest));
   }
else
   {
   return largest;
   }
}

 

Output:

 
Enter size of the list:8
Printing the list:
7             6             1             3             1             7             2             4
The largest number in the list is: 7
 
 
/*
 * C Program to Reverse the String using Recursion
 */
 
#include <stdio.h>
#include <string.h>
 
void reverse(char[],int,int);
int main()
{
char str1[20];
int size;
 
printf("Enter a string to reverse: ");
scanf("%s", str1);
size=strlen(str1);
reverse(str1,0, size -1);
printf("The string after reversing is: %s\n", str1);
getch(); 
return0;
}
 
void reverse(char str1[],int index,int size)
{
char temp;
temp= str1[index];
str1[index]= str1[size - index];
str1[size - index]= temp;
if(index == size /2)
   {
   return;
   }
reverse(str1, index +1, size);
}

Output:

 
Enter a string to reverse: malayalam
The string after reversing is: malayalam
 
 
Enter a string to reverse: cprogramming
The string after reversing is: gnimmargorpc
/*
 * C Program to find Sum of Digits of a Number using Recursion
 */
 
#include <stdio.h>
 
int sum (int a);
 
int main()
{
int num, result;
 
printf("Enter the number: ");
scanf("%d",&num);
result= sum(num);
printf("Sum of digits in %d is %d\n",num, result);
getch(); 
return0;
}
 
int sum (int num)
   {
   if(num !=0)
                   {
                   return(num %10+ sum (num /10));
                   }
   else
                   {
                   return0;
                   }
}
 

Output:

 
Enter the number: 2345
Sum of digits in2345 is 14
      /*
 * C program to find the reverse of a number using recursion
 */
#include <stdio.h>
#include <math.h>
 
int rev(int,int);
 
int main()
{
int num, result;
int length =0, temp;
 
printf("Enter an integer number to reverse: ");
scanf("%d",&num);
temp= num;
while(temp !=0)
         {
         length++;
         temp= temp /10;
         }
result= rev(num, length);
printf("The reverse of %d is %d.\n", num, result);
         getch();
         return 0;
}
 
int rev(intnum,intlen)
         {
         if(len==1)
                         {
                         return num;
                         }
         else
                         {
                         return(((num %10)*pow(10,len-1))+ rev(num/10,--len));
                         }
         }

Output:

 
Enter an integer number to reverse: 1234
The reverse of 1234 is 4321.
/*
 * C Program to find Power of a Number using Recursion
 */
 
#include <stdio.h>
long power (int,int);
 
int main()
{
int pow,num;
long result;
 
printf("Enter a number: ");
scanf("%d",&num);
printf("Enter it's power: ");
scanf("%d",&pow);
result= power(num,pow);
printf("%d^%d is %ld",num,pow, result);
getch();
return 0;
}
 
 
 
long power (int num,int pow)
         {
         if(pow)
                         {
                         return(num* power(num,pow-1));
                         }
         return 1;
         }

Output:

 
Enter a number: 456
Enter it's power: 3
456^3 is 94818816
/*
 * C Program to find whether a Number is Prime or Not using Recursion
 */
 
#include <stdio.h>
int primeno(int,int);
 
int main()
{
int num, check;
printf("Enter a number: ");
scanf("%d",&num);
check=primeno(num,num/2);
if(check ==1)
         {
         printf("%d is a prime number\n", num);
         }
else
         {
         printf("%d is not a prime number\n", num);
         }
return 0;
}
 
int primeno(int num,int  i)
         {
         if(i ==1)
                         {
                         return 1;
                         }
         else
                         {
                         if(num% i ==0)
                                        {
                                        return 0;
                                        }
                         else
                                        {
                                        return primeno(num, i -1);
                                        }
                         }
}

Output:          

Enter a number: 456
456 is not a prime number
 
 
Enter a number: 89
89 is a prime number
/*
 * C Program to find Product of 2 Numbers using Recursion
 */
 
#include <stdio.h>
int product(int,int);
 
int main()
{
int a, b, result;
 
printf("Enter two numbers to find their product: ");
scanf("%d%d",&a,&b);
result= product(a, b);
printf("Product of %d and %d is %d\n", a, b, result);
getch();
return 0;
}
 
int product(int a,int b)
         {
         if(a < b)
                         {
                         return product(b, a);
                         }
else if(b !=0)
         {
         return(a + product(a, b -1));
         }
else
         {
         return 0;  
         }
}

Output:

Enter two numbers to find their product: 176340
Product of 176 and 340 is 59840
/*
 * C Program to Print Binary Equivalent of an Integer using Recursion
 */
 
#include <stdio.h>
 
int binary_conversion(int);
 
int main()
{
int num, bin;
 
printf("Enter a decimal number: ");
scanf("%d",&num);
bin=binary_conversion(num);
printf("The binary equivalent of %d is %d\n", num, bin);
getch();
return 0;
}
 
int binary_conversion(int num)
{
         if(num ==0)
                         {
                         return 0;
                         }
         else
                         {
                         return(num %2)+10*binary_conversion(num/2);
                         }
         
}

 

Output:
 
Enter a decimal number: 10
The binary equivalent of 10 is 1010
/*
 * C Program to find the first capital letter in a string using 
 * Recursion
 */
 
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
char caps_check(char*);
 
int main()
{
char string[20], letter;
 
printf("Enter a string to find it's first capital letter: ");
scanf("%s", string);
letter=caps_check(string);
if(letter ==0)
         {
         printf("No capital letter is present in %s.\n", string);
         }
else
         {
         printf("The first capital letter in %s is %c.\n", string, letter);}
         return 0;
         }
getch();
return 0;
}
 
char caps_check(char*string)
         {
         static int i =0;
         if(i <strlen(string))
                         {
                         if(isupper(string[i]))
                                        {
                                        return string[i];
                                        }
                         else
                                        {
                                        i = i +1;
                                        return caps_check(string);
                                        }
                         }
else return 0;
}

Output:

Enter a string to findit's first capital letter: iloveC
The first capital letter in iloveC is C.
 

No comments:

Post a Comment

JAVA PROGRAMMING - OOPS CHAPTER 1

Object-Oriented Programming Chapter 1: Basics by Souradeep Roy Using IntelliJ IDEA Community version:- _____________________________________...