Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int tailrec_cover(int x)
- {
- return tailrec_fact(x,1); //apeleaza tailrec_fact cu nr =1
- }
- int tailrec_fact(int x, int nr)
- {
- if(x==0) return nr;
- return tailrec_fact(x-1,x*nr);
- }
- int non_tailrec_fact(int x)
- {
- if(x==0) return 1;
- return x*non_tailrec_fact(x-1);
- }
- int directrec_fact(int x)
- {
- if(x==0)
- return 1;
- else
- return x*directrec_fact(x-1);
- }
- int decr(int a)
- {
- return a-1;
- }
- int indirectrec_fact1(int x)
- {
- if(x==0)
- return 1;
- else
- return x*indirectrec_fact2(x-1);
- }
- int indirectrec_fact2(int x)
- {
- if(x==0)
- return 1;
- else
- return x*indirectrec_fact1(x-1);
- }
- int x;
- int main()
- {
- printf("x= ");
- scanf("%d", &x);
- printf("Tail-recursive function: %d\n", tailrec_cover(x));
- printf("Non-tail-recursive function: %d\n", non_tailrec_fact(x));
- printf("Direct recursive function: %d\n", directrec_fact(x));
- printf("Indirect recursive function: %d\n", indirectrec_fact1(5));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement