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.