Thread overview
[Issue 7646] New: bug in code sample and unittest
March 04, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7646

           Summary: bug in code sample and unittest
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: trivial
          Priority: P2
         Component: websites
        AssignedTo: nobody@puremagic.com
        ReportedBy: josvanuden@gmail.com


--- Comment #0 from josvanuden@gmail.com 2012-03-04 11:59:48 PST ---
The following sample code on std.functional contains a bug. http://dlang.org/phobos/std_functional.html#memoize

    ulong fib(ulong n) {
        alias memoize!fib mfib;
        return n < 2 ? 1 : mfib(n - 2) + mfib(n - 1);
    }

    assert(fib(10) == 89);

fib(10) should be 55. http://en.wikipedia.org/wiki/Fibonacci_number#List_of_Fibonacci_numbers

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);

It's also in the unittest https://github.com/D-Programming-Language/phobos/blob/master/std/functional.d

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
March 04, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7646



--- Comment #1 from josvanuden@gmail.com 2012-03-04 12:08:27 PST ---
(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);
    }

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
March 05, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7646


josvanuden@gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P2                          |P5


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
March 11, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7646



--- Comment #2 from josvanuden@gmail.com 2012-03-11 04:24:44 PDT ---
ulong fib (ulong n) {
    alias memoize!fib mfib;
    return n < 2 ? n : mfib(n - 2) + mfib(n - 1);
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
June 04, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7646


josvanuden@gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |INVALID


--- Comment #3 from josvanuden@gmail.com 2012-06-04 07:16:19 PDT ---
It turns out some people regard F0 = 0 and some F0 = 1. So it's not a bug after all.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------