Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.ruby > #3206
| From | "WJ" <w_a_x_man@yahoo.com> |
|---|---|
| Newsgroups | comp.lang.ruby |
| Subject | Re: Tail Call Optimization (Tail Recursion) |
| Date | 2011-04-20 04:12 +0000 |
| Organization | NewsGuy - Unlimited Usenet $19.95 |
| Message-ID | <iolmeo02p4k@enews1.newsguy.com> (permalink) |
| References | (1 earlier) <ef09b557ab56bb9fa49e426e2df5137a@ruby-forum.com> <iohuqr02fa2@enews2.newsguy.com> <BANLkTindWcQ=Ndy5Cxo5egCSSwNixExtkw@mail.gmail.com> <ioidrk02rnf@enews5.newsguy.com> <BANLkTikmX9apEJYn72r+PGCs5AL35OqUWA@mail.gmail.com> |
Louis-Philippe wrote:
> the thing is the tail recursive one doesn't really yield the full sequence
> as it omits the 0, and so:
>
> fib(30) => 832040
> tail_fib(30) => 1346269
Corrected:
;; Gambit Scheme
(define (fib n)
(define (%fib n a b)
(if (= 1 n)
b
(%fib (- n 1) b (+ a b))))
(%fib n 0 1))
(println "30th fibonacci number is " (fib 30))
(define bigfib 0)
(time
(set! bigfib (fib 50000)))
(let* ((str (number->string bigfib))
(len (string-length str)))
(println "Result of (fib 50000) has " len " digits:")
(println (substring str 0 9) " ... " (substring str (- len 9) len)))
==>
30th fibonacci number is 832040
(time (set! bigfib (fib 50000)))
562 ms real time
516 ms cpu time (500 user, 16 system)
807 collections accounting for 157 ms real time (188 user, 0 system)
119070200 bytes allocated
no minor faults
no major faults
Result of (fib 50000) has 10450 digits:
107777348 ... 373553125
Back to comp.lang.ruby | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Tail Call Optimization (Tail Recursion) Terry Michaels <cmhoward@frigidcode.com> - 2011-04-18 00:59 -0500
Re: Tail Call Optimization (Tail Recursion) 7stud -- <bbxx789_05ss@yahoo.com> - 2011-04-18 12:29 -0500
Re: Tail Call Optimization (Tail Recursion) "WJ" <w_a_x_man@yahoo.com> - 2011-04-18 18:10 +0000
Re: Tail Call Optimization (Tail Recursion) Louis-Philippe <default@spiralix.org> - 2011-04-18 15:40 -0500
Re: Tail Call Optimization (Tail Recursion) "WJ" <w_a_x_man@yahoo.com> - 2011-04-18 22:27 +0000
Re: Tail Call Optimization (Tail Recursion) Louis-Philippe <default@spiralix.org> - 2011-04-19 07:28 -0500
Re: Tail Call Optimization (Tail Recursion) "WJ" <w_a_x_man@yahoo.com> - 2011-04-20 04:12 +0000
Re: Tail Call Optimization (Tail Recursion) "WJ" <w_a_x_man@yahoo.com> - 2011-04-20 04:30 +0000
Re: Tail Call Optimization (Tail Recursion) Robert Klemme <shortcutter@googlemail.com> - 2011-04-20 06:37 -0500
Re: Tail Call Optimization (Tail Recursion) Vincent Manis <vmanis@telus.net> - 2011-04-18 19:41 -0500
Re: Tail Call Optimization (Tail Recursion) Steve Klabnik <steve@steveklabnik.com> - 2011-04-18 20:42 -0500
Re: Tail Call Optimization (Tail Recursion) Vincent Manis <vmanis@telus.net> - 2011-04-18 21:51 -0500
Re: Tail Call Optimization (Tail Recursion) Michael Edgar <adgar@carboni.ca> - 2011-04-18 22:12 -0500
Re: Tail Call Optimization (Tail Recursion) Steve Klabnik <steve@steveklabnik.com> - 2011-04-19 08:48 -0500
Re: Tail Call Optimization (Tail Recursion) Brian Candler <b.candler@pobox.com> - 2011-04-19 08:56 -0500
Re: Tail Call Optimization (Tail Recursion) Steve Klabnik <steve@steveklabnik.com> - 2011-04-19 10:07 -0500
Re: Tail Call Optimization (Tail Recursion) Steve Klabnik <steve@steveklabnik.com> - 2011-04-18 12:39 -0500
csiph-web