(In reply to comment #0)
> I think the code should be (n <= 2):
>
> ulong fib(ulong n) {
> alias memoize!fib mfib;
> return n <= 2 ? 1 : mfib(n - 2) + mfib(n - 1);
> }
>
> assert(fib(10) == 55);
No, that still won't do. This is better:
ulong fib(ulong n) {
alias memoize!fib mfib;
return n <= 2 ? n != 0 : mfib(n - 2) + mfib(n - 1);
}
Comment #2 by josvanuden — 2012-03-11T04:24:44Z
ulong fib (ulong n) {
alias memoize!fib mfib;
return n < 2 ? n : mfib(n - 2) + mfib(n - 1);
}
Comment #3 by josvanuden — 2012-06-04T07:16:19Z
It turns out some people regard F0 = 0 and some F0 = 1. So it's not a bug after all.