/* Write C programs that use both recursive and non-recursive functions    To solve Towers of Hanoi problem.*/#include<con...
stkdndl[top]=dndl;         stkadd[top]=3;         num=num-1;         sndl=sndl;         temp=indl;         indl=dndl;     ...
goto one;    four:            if(top==NULL)             return;            num=stkn[top];            sndl=stksndl[top];   ...
hanoiRecursion( num - 1,ndl1, ndl3, ndl2 );      printf( "Move top disk from needle %c to needle %c.", ndl1, ndl2 );      ...
/* Write C programs that use both recursive and non-recursive functions    To find the GCD (greatest common divisor) of tw...
getch();}/* Recursive Function*/unsigned int GcdRecursive(unsigned m, unsigned n){if(n>m)       return GcdRecursive(n,m);i...
GcdRecursive(q,remainder);}/* Write C programs that use both recursive and non-recursive functions    To find the factoria...
printf("Factorial of 0 is 1n");    else    {        printf("Factorial of %d Using Recursive Function is %dn",n,recr_factor...
Upcoming SlideShare
Loading in...5
×

week-4x

171

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
171
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

week-4x

  1. 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. 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. 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. 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. 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. 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. 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. 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;}

×