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: 8The 8 number in fibonacci series is 21 Enter the nth number in fibonacci series: 12The 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:8Printing 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: malayalamThe string after reversing is: malayalam Enter a string to reverse: cprogrammingThe 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: 2345Sum 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: 1234The 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: 456Enter it's power: 3456^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: 456456 is not a prime number
Enter a number: 8989 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: 176340Product 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: 10The 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: iloveCThe first capital letter in iloveC is C.
No comments:
Post a Comment