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 ??