Fibonacci sequence: Difference between revisions

Content deleted Content added
Added a solution and explanation for Rhovas
m Tweaked implementation for readability
Line 10,946: Line 10,946:
This solution works for negative numbers
This solution works for negative numbers
<syntaxhighlight lang="scala">
<syntaxhighlight lang="scala">
// Calculate nth positive fibonacci number
func fib(n: Integer): Integer {
func pFib(n: Integer): Integer {
if(n < 0 && n.mod(2) == 0) return -fib(-n);
if(n < 0 && n.mod(2) != 0) return fib(-n);

var lastFib = -1;
var lastFib = -1;
var fib = 1;
var fib = 1;
Line 10,958: Line 10,956:
};
};
return fib;
return fib;
}

// Calculate nth integer fibonacci number
func fib(n: Integer): Integer {
match ([n < 0, n.mod(2)]){
[true, 0]: return -pFib(-n);
[true, _]: return pFib(-n);
else: return pFib( n);
}
}
}
</syntaxhighlight>
</syntaxhighlight>