------art_12914_23737615.1135366588960
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

ah, but to me that isn't completely iterative.... iterative is using a loop
within a function to make sure it and all functions it calls do not call
back up the tree...

hence:

# yes assumptions about positive integer numbers...
# complete recursive:

def factorial( x )
  return 0 if x < 1
  x * factorial( x - 1 )
end

# tail-recursive:

def factorial( x, sum = 1 )
  return 0 if x < 1
  factorial( ( x - 1 ), ( sum * x ) )
end

# iterative:

def factorial( x )
  sum = 1
  for i in (1..x).to_a
    sum *= i
  end
end

... anyways.

j.



On 12/23/05, Christian Neukirchen <chneukirchen / gmail.com> wrote:
>
> Jeff Wood <jeff.darklight / gmail.com> writes:
>
> > ... I believe the question was in regards to implementing factorial in a
> > tail-recursive manner.
> >
> > I believe the statement was:
> >
> > "I'm a complete newb to lisp, I've been reading Practical Common Lisp &
> On
> > Lisp.  I've also been working through "The little schemer" and SICP...
> I'm
> > running CMUCL under SLIME & Emacs (v21.4). ( phew ) ... I've written an
> > iterative & a normally recursive version of factorial ... Now I'm trying
> to
> > figure out how to implement it in a tail-recursive fashion ... can
> anybody
> > help me write a tail-recursive version ?? I'm not familiar with the call
> > pattern yet." ...
>
> I see, the iterative version at
>   http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-21.html#%_thm_3.9
> actually is the tail-recursive version. :-)
>
> They could have told you that, of course.
>
> > or something like that ...
> >
> > Jeff Wood
> --
> Christian Neukirchen  <chneukirchen / gmail.com>  http://chneukirchen.org
>
>


--
"Remember. Understand. Believe. Yield! -> http://ruby-lang.org"

Jeff Wood

------art_12914_23737615.1135366588960--