MathGroup Archive 2005

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

Search the Archive

Re: Why is y a local variable here?


ggroup at sarj.ca 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_] :=
  Module[
    {sd, srp = Sqrt[Prime[n]], py},
    Print["Push >>>>>>>>>>>>"];
    Information[sd];
    sd[y_] = SDP[n - 1, y];
    Print["Pop <<<<<<<<<<<<<"];
    Information[sd];
    Expand[sd[x + srp] sd[x - srp]]
]

SDP[5, x]


-- 
The Mathematica Wiki: http://www.mathematica-users.org/
Math for Comp Sci http://www.ifi.unizh.ch/math/bmwcs/master.html
Math for the WWW: http://www.w3.org/Math/


  • 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?