On 23.10.2016 15:04, Stefam Koch wrote:
Hi Guys,
while brushing up on my C and algorithm skills, accidently created a
version of fibbonaci which I deem to be faster then the other ones
floating around.
It's also more concise
the code is :
int computeFib(int n)
{
int t = 1;
int result = 0;
while(n--)
{
result = t - result;
t = t + result;
}
return result;
}
int computeFib(int n){
int[2] a=[0,1],b=[1,2],c=[1,-1];
for(;n;n>>=1){
foreach(i;1-n&1..2){
auto d=a[i]*a[1];
a[i]=a[i]*b[1]+c[i]*a[1];
b[i]=b[i]*b[1]-d;
c[i]=c[i]*c[1]-d;
}
}
return a[0];
}
(Also: you might want to use BigInt.)