MathGroup Archive 2002

[Date Index] [Thread Index] [Author Index]

Search the Archive

Pure recursive functions

  • To: mathgroup at smc.vnet.net
  • Subject: [mg38341] Pure recursive functions
  • From: Niall Palfreyman <niall.palfreyman at fh-weihenstephan.de>
  • Date: Thu, 12 Dec 2002 01:36:47 -0500 (EST)
  • Organization: Fachhochschule Weihenstephan
  • Sender: owner-wri-mathgroup at wolfram.com

Hello,

I'm new to Mathematica, and I have a question to which I've found no
answers in the archives. Can you help?

The issue is: how do I create a pure recursive function? Normally when
creating a recursive function I use the name of the function to perform
the recursive call:

fact[n_] :=
  If[n == 1, 1, n fact[n - 1]]

However this has the disadvantage that the symbol "fact" is now global.
The logical step to make the name of the function local is something
like:

Function[factl, factl[5]] @@ {Function[n, If[n == 0, 1, n factl[n -
1]]]}

or maybe:

With[{fact = Function[n, If[n == 0, 1, n fact[n - 1]]]}, fact[5]]

However both of these solutions steadfastly return the value "5
fact[4]". I assume the problem is that the variables initialised in
Function[] and With[] must be symbols, and cannot be patterns. But a
recursion requires a pattern (n_ in the first, global, solution above).
What do I do to get factorial to work _without_ making the symbol "fact"
global?

I'd be grateful for any help.

Thanks,
Niall.


  • Prev by Date: Re: a visualization problem in Mathematica
  • Next by Date: PlusMinus Operator Question
  • Previous by thread: Re: FindMinimun Function
  • Next by thread: Pure recursive functions