Skip to content
Snippets Groups Projects
libfib.c 477 B
Newer Older
extern int fib_main();
extern int fib2();
extern int fib2p(int n, int (*)(int,int));

int add2(int n1, int n2)
{
	if (n1 == 0)
		return n2;
	else if (n2 == 0)
		return n1;
	else if (n2 == 2)
		return add2(add2(n1, 1),1);
	else
		return add2(0, n2) + add2(n1, 0);
}

int fib(int n)
{
	if (n <= 2)
		return 1;
	else
		return fib_main(n-1) + fib2(n-2);

}

int fibp(int n, int (*addp)(int,int))
{
	if (n <= 2)
		return 1;
	else
		return (*addp)(fib_main(n-1),fib2p(n-2,&add2));
}