MathGroup Archive 2005

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

Search the Archive

Re: Why is y a local variable here?

  • To: mathgroup at
  • Subject: [mg63125] Re: Why is y a local variable here?
  • From: "Steven T. Hatton" <hattons at>
  • Date: Thu, 15 Dec 2005 03:06:34 -0500 (EST)
  • References: <> <dnopmf$2j5$>
  • Sender: owner-wri-mathgroup at

ggroup at wrote:

> On Tuesday, December 13, 2005 at 03:41 GMT -0500, Steven T. Hatton wrote:
> <snip>
>> I do not understand why y is not "contaminated" by the global value when
>> it appears in sd[y_] = SDP[n - 1, y];. Can someone explain this?
> Don't you need to use SetDelayed instead of Set?  In other words,
> doesn't the syntax for a function definition need to be something
> like: sd[y_]:=SDP[x-1, y]; or sd=Function[y, SDP[x-1,y]; ?

No.  The idea is to stack recursive calls to SDP, and assign the result of
popping the stack to sd[y_] which is then used in the subsequent
Expand[sd[x + srp] sd[x - srp]].  Evaluating the following should show what
happens in terms of recursion:

Clear[SDP, x, y]
SDP[0, x_] := x
SDP[n_Integer?Positive, x_] :=
    {sd, srp = Sqrt[Prime[n]], py},
    Print["Push >>>>>>>>>>>>"];
    sd[y_] = SDP[n - 1, y];
    Print["Pop <<<<<<<<<<<<<"];
    Expand[sd[x + srp] sd[x - srp]]

SDP[5, x]

The Mathematica Wiki:
Math for Comp Sci
Math for the WWW:

  • Prev by Date: Re: Evaluate[] not needed in With[]
  • Next by Date: Re: Parametric Numerical Integral
  • Previous by thread: Re: Why is y a local variable here?
  • Next by thread: Re: Why is y a local variable here?