Stack overflow X_x

0

Witam
Napisałem prosty program do obliczania liczb fibonacciego metodą rekurencyjną:

#include <cstdio>
#include <cstdlib>

using namespace std;

unsigned long long int fib(unsigned long long int n)
{
	if(n == 0) return 0;
	if(n == 1) return 1;
	return fib(n-1)+fib(n-2);
}

int main(void)
{
	unsigned long long int n;
	scanf("%llu", &n);
	printf("%llu", fib(n));
	return 0;
}

Gdy go uruchamiam następuje wielkie pierdut i wywala mi stack overflow. Okazuje się gdy zamiast linijki printf("%llu", fib(n)); wstawię printf("%llu", fib((unsigned)n)); wszystko działa dobrze :-| Czy ktoś wie dlaczego nie moge jako argument przekazywać unsigned long long int ??

0

eee tam, głupoty opowiadasz.
Jeśli to runtime M$ (VC++, MinGW) to typem jest "I64u", a nie "llu".
Dlatego właśnie lepiej jest użyć C++ i strumieni :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1