fork download
  1. #include <stdio.h>
  2.  
  3. unsigned f_re(unsigned n,unsigned *row,unsigned deep)
  4. {
  5. unsigned ret=n<2?1:f_re(n-2,row,deep+1)+f_re(n-1,row,deep+1);
  6. printf("%*u: f(%u)=%u;\n",deep+3,++*row,n,ret);
  7. return ret;
  8. }
  9.  
  10. unsigned f_er(unsigned n,unsigned *row,unsigned deep)
  11. {
  12. printf("%*u: f(%u);\n",deep+3,++*row,n);
  13. return n<2?1:f_er(n-2,row,deep+1)+f_er(n-1,row,deep+1);
  14. }
  15.  
  16. int main()
  17. {
  18. unsigned n,r=0;
  19. scanf("%u",&n);
  20. printf("Drzewo wywolan dla ciagu rekurencyjnego:\n");
  21. printf("Obliczony rekurencyjnie %d wyraz ciagu Fibonacciego wynosi: %d\n",n,f_re(n,&r,0));
  22. r=0;
  23. printf("Obliczony rekurencyjnie %d wyraz ciagu Fibonacciego wynosi: %d\n",n,f_er(n,&r,0));
  24. return 0;
  25. }
Success #stdin #stdout 0s 2252KB
stdin
5
stdout
Drzewo wywolan dla ciagu rekurencyjnego:
    1: f(1)=1;
     2: f(0)=1;
     3: f(1)=1;
    4: f(2)=2;
   5: f(3)=3;
     6: f(0)=1;
     7: f(1)=1;
    8: f(2)=2;
     9: f(1)=1;
     10: f(0)=1;
     11: f(1)=1;
    12: f(2)=2;
   13: f(3)=3;
  14: f(4)=5;
 15: f(5)=8;
Obliczony rekurencyjnie 5 wyraz ciagu Fibonacciego wynosi: 8
  1: f(5);
   2: f(3);
    3: f(1);
    4: f(2);
     5: f(0);
     6: f(1);
   7: f(4);
    8: f(2);
     9: f(0);
    10: f(1);
   11: f(3);
    12: f(1);
    13: f(2);
     14: f(0);
     15: f(1);
Obliczony rekurencyjnie 5 wyraz ciagu Fibonacciego wynosi: 8