Pure recursive functions
- To: mathgroup at smc.vnet.net
- Subject: [mg38363] Pure recursive functions
- From: Niall Palfreyman <niall.palfreyman at fh-weihenstephan.de>
- Date: Fri, 13 Dec 2002 04:09:00 -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 == 0, 1, n fact[n - 1]] However this has the disadvantage that the symbol "fact" is now global. The logical step to avoid this seems to be to make the name of the function local as in something like the following: Function[fact, fact[5]] @@ {Function[n, If[n==0, 1, n fact[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.