fork download
  1. #include <stdio.h>
  2. #include <stdarg.h>
  3.  
  4. // Zwykły printf, ale z odpowiednim wcięciem.
  5. void iprintf(int indent, const char *format, ...) {
  6. va_list args;
  7. va_start(args, format);
  8.  
  9. int i;
  10. for (i = 0; i < 3*indent; i++) {
  11. putchar(' ');
  12. }
  13. vprintf(format, args);
  14.  
  15. va_end(args);
  16. }
  17.  
  18. int fib(int n, int indent) {
  19. static int counter = 0;
  20. counter++;
  21.  
  22. int count = counter;
  23.  
  24. if (n < 2) {
  25. iprintf(indent, "%d. fib(%d) = %d\n", count, n, n);
  26. return n;
  27. }
  28.  
  29. iprintf(indent, "%d. fib(%d) = fib(%d) + fib(%d)\n", count, n, n-1, n-2);
  30. int result = fib(n-1, indent+1) + fib(n-2, indent+1);
  31. iprintf(indent, "%d. fib(%d) = %d\n", count, n, result);
  32.  
  33. return result;
  34. }
  35.  
  36. int main(void) {
  37. fib(7, 0);
  38.  
  39. return 0;
  40. }
  41.  
Success #stdin #stdout 0s 1832KB
stdin
Standard input is empty
stdout
1. fib(7) = fib(6) + fib(5)
   2. fib(6) = fib(5) + fib(4)
      3. fib(5) = fib(4) + fib(3)
         4. fib(4) = fib(3) + fib(2)
            5. fib(3) = fib(2) + fib(1)
               6. fib(2) = fib(1) + fib(0)
                  7. fib(1) = 1
                  8. fib(0) = 0
               6. fib(2) = 1
               9. fib(1) = 1
            5. fib(3) = 2
            10. fib(2) = fib(1) + fib(0)
               11. fib(1) = 1
               12. fib(0) = 0
            10. fib(2) = 1
         4. fib(4) = 3
         13. fib(3) = fib(2) + fib(1)
            14. fib(2) = fib(1) + fib(0)
               15. fib(1) = 1
               16. fib(0) = 0
            14. fib(2) = 1
            17. fib(1) = 1
         13. fib(3) = 2
      3. fib(5) = 5
      18. fib(4) = fib(3) + fib(2)
         19. fib(3) = fib(2) + fib(1)
            20. fib(2) = fib(1) + fib(0)
               21. fib(1) = 1
               22. fib(0) = 0
            20. fib(2) = 1
            23. fib(1) = 1
         19. fib(3) = 2
         24. fib(2) = fib(1) + fib(0)
            25. fib(1) = 1
            26. fib(0) = 0
         24. fib(2) = 1
      18. fib(4) = 3
   2. fib(6) = 8
   27. fib(5) = fib(4) + fib(3)
      28. fib(4) = fib(3) + fib(2)
         29. fib(3) = fib(2) + fib(1)
            30. fib(2) = fib(1) + fib(0)
               31. fib(1) = 1
               32. fib(0) = 0
            30. fib(2) = 1
            33. fib(1) = 1
         29. fib(3) = 2
         34. fib(2) = fib(1) + fib(0)
            35. fib(1) = 1
            36. fib(0) = 0
         34. fib(2) = 1
      28. fib(4) = 3
      37. fib(3) = fib(2) + fib(1)
         38. fib(2) = fib(1) + fib(0)
            39. fib(1) = 1
            40. fib(0) = 0
         38. fib(2) = 1
         41. fib(1) = 1
      37. fib(3) = 2
   27. fib(5) = 5
1. fib(7) = 13