#include <stdio.h>
#include <stdarg.h>

// Zwykły printf, ale z odpowiednim wcięciem.
void iprintf(int indent, const char *format, ...) {
    va_list args;
	va_start(args, format);

	int i;
	for (i = 0; i < 3*indent; i++) {
		putchar(' ');
	}
	vprintf(format, args);

	va_end(args);	
}

int fib(int n, int indent) {
	static int counter = 0;
	counter++;
	
	int count = counter;
	
	if (n < 2) {
		iprintf(indent, "%d. fib(%d) = %d\n", count, n, n);
		return n;
	}
	
	iprintf(indent, "%d. fib(%d) = fib(%d) + fib(%d)\n", count, n, n-1, n-2);
	int result = fib(n-1, indent+1) + fib(n-2, indent+1);
	iprintf(indent, "%d. fib(%d) = %d\n", count, n, result);
	
	return result;
}

int main(void) {
	fib(7, 0);
	
	return 0;
}
