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 silnia(int n, int indent) {
  19. if (n == 0) {
  20. iprintf(indent, "silnia(0) = 1\n");
  21. return 1;
  22. }
  23.  
  24. iprintf(indent, "silnia(%d) = %d*silnia(%d)\n", n, n, n-1);
  25.  
  26. int result = n*silnia(n-1, indent+1);
  27.  
  28. iprintf(indent, "silnia(%d) = %d\n", n, result);
  29. return result;
  30. }
  31.  
  32. int main(void) {
  33. silnia(10, 0);
  34.  
  35. return 0;
  36. }
  37.  
Success #stdin #stdout 0s 1832KB
stdin
Standard input is empty
stdout
silnia(10) = 10*silnia(9)
   silnia(9) = 9*silnia(8)
      silnia(8) = 8*silnia(7)
         silnia(7) = 7*silnia(6)
            silnia(6) = 6*silnia(5)
               silnia(5) = 5*silnia(4)
                  silnia(4) = 4*silnia(3)
                     silnia(3) = 3*silnia(2)
                        silnia(2) = 2*silnia(1)
                           silnia(1) = 1*silnia(0)
                              silnia(0) = 1
                           silnia(1) = 1
                        silnia(2) = 2
                     silnia(3) = 6
                  silnia(4) = 24
               silnia(5) = 120
            silnia(6) = 720
         silnia(7) = 5040
      silnia(8) = 40320
   silnia(9) = 362880
silnia(10) = 3628800