Lines Matching refs:fib
401 sub fib {
404 fib($n-1) + fib($n-2);
407 This function is very slow. Why? To compute fib(14), it first wants
408 to compute fib(13) and fib(12), and add the results. But to compute
409 fib(13), it first has to compute fib(12) and fib(11), and then it
410 comes back and computes fib(12) all over again even though the answer
411 is the same. And both of the times that it wants to compute fib(12),
412 it has to compute fib(11) from scratch, and then it has to do it
413 again each time it wants to compute fib(13). This function does so
415 run---fib(14) makes 1,200 extra recursive calls to itself, to compute
419 `fib' function above, it will compute fib(14) exactly once, the first
421 ask for fib(14) again, it gives you the result out of the table.
422 While computing fib(14), instead of computing fib(12) twice, it does
424 It doesn't compute fib(11) four times; it computes it once, getting it
426 recursive calls to `fib', it makes 15. This makes the function about
433 { my @fib;
434 sub fib {
436 return $fib[$n] if defined $fib[$n];
437 return $fib[$n] = $n if $n < 2;
438 $fib[$n] = fib($n-1) + fib($n-2);
445 memoize('fib');
447 # Rest of the fib function just like the original version.
508 memoize('fib', INSTALL => 'fastfib')
510 installs the memoized version of C<fib> as C<fastfib>; without the
511 C<INSTALL> option it would have replaced the old C<fib> with the