Fibonacci in C
Normaal gesproken wordt een Fibonacci reeks gedaan met behulp van recursie, als volgt:
unsigned long long fibonacci(int n)
{
if (n <= 0) { return (0); }
if (n <= 2) { return (1); }
return (fibonacci(n-1) + fibonacci(n-2));
}
Naar aanleiding van een simpele Fibonacci reeks functie grotendeels gemaakt door Patrick Smits, kan dit een stuk sneller, zonder recursie, maar met itteratie.
unsigned long long fibonacci_list(int reset)
{
// Zie je wel Albert Mietus, je hebt slechts 2 variabelen nodig
static unsigned long long a=0, b=0;
if (reset!=0) { a=0; b=0; }
return ((a==0) ? ((b==0) ? a++ : ++a)
: ((b==0) ? (b+=a--) : ((a<b) ? (a+=b) : (b+=a))));
}
unsigned long long fibonacci_first(void)
{
return (fibonacci_list(1));
}
unsigned long long fibonacci_next(void)
{
return (fibonacci_list(0));
}
unsigned long long fibonacci(int n)
{
unsigned long long f = fibonacci_first();
int i;
for (i = 1; i <= n; i++) { f = fibonacci_next(); }
return (f);
}
C, Code, NL, Programmeren

Recent Comments