Uploaded on


More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads


Total Views
On Slideshare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 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;}