Upcoming SlideShare
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Standard text messaging rates apply

# week-4x

156
views

Published on

Published in: Education

0 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

• Be the first to like this

Views
Total Views
156
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
2
0
Likes
0
Embeds 0
No embeds

No notes for slide

### Transcript

• 1. /* Write C programs that use both recursive and non-recursive functions To solve Towers of Hanoi problem.*/#include<conio.h>#include<stdio.h>/* Non-Recursive Function*/void hanoiNonRecursion(int num,char sndl,char indl,char dndl){ char stkn[100],stksndl[100],stkindl[100],stkdndl[100],stkadd[100],temp; int top,add; top=NULL; one: if(num==1) { printf("nMove top disk from needle %c to needle %c ",sndl,dndl); goto four; } two: top=top+1; stkn[top]=num; stksndl[top]=sndl; stkindl[top]=indl;
• 2. stkdndl[top]=dndl; stkadd[top]=3; num=num-1; sndl=sndl; temp=indl; indl=dndl; dndl=temp; goto one;three: printf("nMove top disk from needle %c to needle %c ",sndl,dndl); top=top+1; stkn[top]=num; stksndl[top]=sndl; stkindl[top]=indl; stkdndl[top]=dndl; stkadd[top]=5; num=num-1; temp=sndl; sndl=indl; indl=temp; dndl=dndl;
• 3. goto one; four: if(top==NULL) return; num=stkn[top]; sndl=stksndl[top]; indl=stkindl[top]; dndl=stkdndl[top]; add=stkadd[top]; top=top-1; if(add==3) goto three; else if(add==5) goto four;}/* Recursive Function*/void hanoiRecursion( int num,char ndl1, char ndl2, char ndl3){ if ( num == 1 ) { printf( "Move top disk from needle %c to needle %c.", ndl1, ndl2 ); return; }
• 4. hanoiRecursion( num - 1,ndl1, ndl3, ndl2 ); printf( "Move top disk from needle %c to needle %c.", ndl1, ndl2 ); hanoiRecursion( num - 1,ndl3, ndl2, ndl1 );}void main(){ int no; clrscr(); printf("Enter the no. of disks to be transferred: "); scanf("%d",&no); if(no<1) printf("nTheres nothing to move."); else printf("Non-Recursive"); hanoiNonRecursion(no,A,B,C); printf("nRecursive"); hanoiRecursion(no,A,B,C); getch();}
• 5. /* Write C programs that use both recursive and non-recursive functions To find the GCD (greatest common divisor) of two given integers.*/#include<stdio.h>#include<conio.h>#include<math.h>unsigned int GcdRecursive(unsigned m, unsigned n);unsigned int GcdNonRecursive(unsigned p,unsigned q);int main(void){ int a,b,iGcd; clrscr(); printf("Enter the two numbers whose GCD is to be found: "); scanf("%d%d",&a,&b); printf("GCD of %d and %d Using Recursive Function is %dn",a,b,GcdRecursive(a,b)); printf("GCD of %d and %d Using Non-Recursive Function is %dn",a,b,GcdNonRecursive(a,b));
• 6. getch();}/* Recursive Function*/unsigned int GcdRecursive(unsigned m, unsigned n){if(n>m) return GcdRecursive(n,m);if(n==0) return m;else return GcdRecursive(n,m%n);}/* Non-Recursive Function*/unsigned int GcdNonRecursive(unsigned p,unsigned q){unsigned remainder;remainder = p-(p/q*q);if(remainder==0) return q;else
• 7. GcdRecursive(q,remainder);}/* Write C programs that use both recursive and non-recursive functions To find the factorial of a given integer.*/#include<stdio.h>#include<conio.h>unsigned int recr_factorial(int n);unsigned int iter_factorial(int n);void main(){ int n,i; long fact; clrscr(); printf("Enter the number: "); scanf("%d",&n); if(n==0)
• 8. printf("Factorial of 0 is 1n"); else { printf("Factorial of %d Using Recursive Function is %dn",n,recr_factorial(n)); printf("Factorial of %d Using Non-Recursive Function is %dn",n,iter_factorial(n)); } getch();}/* Recursive Function*/unsigned int recr_factorial(int n) { return n>=1 ? n * recr_factorial(n-1) : 1;}/* Non-Recursive Function*/unsigned int iter_factorial(int n) { int accu = 1; int i; for(i = 1; i <= n; i++) { accu *= i; } return accu;}