package funkcje;

public class Funkcje {
	public static long silnia(int n) {
		if(n <= 1)
			return 1;
		return n * silnia(n-1);
	}

	public static long fibRek(int n) {
		if(n <= 0)
			return 0;
		if(n == 1)
			return 1;
		return fibRek(n-2) + fibRek(n-1);
	}

	public static long fibTab(int n) {
		if(n < 0) {
			throw new IllegalArgumentException("ujemny parametr fib");
		}
		long[] f = new long[n+2];
		f[0] = 0;
		f[1] = 1;
		for(int i = 2; i <= n; i++) {
			f[i] = f[i-2] + f[i-1];
		}
		System.out.println("Cała tablica: " + java.util.Arrays.toString(f));
		return f[n];
	}

	public static long fib(int n) {
		if(n < 0) {
			throw new IllegalArgumentException("ujemny parametr fib");
		}
		long ostatnia = 0;
		long przedostania = 1;
		for(int i = 1; i <= n; i++) {
			long nowa = przedostania + ostatnia;
			przedostania = ostatnia;
			ostatnia = nowa;
		}
		return ostatnia;
	}

}
