I've been experimenting with implementing recursive calls to a Stata
program, and in particular, getting the program to store something in
the return list at each call, so that at the end of program, the
return list would contain r(something1) , r(something2), ...,
r(somethingNumberOfCalls). I have experienced various difficulties
in not clobbering the return list. Here's a simple example to
demonstrate one of the problems I have had:
/// A "do nothing" recursion example; recur calls itself "stopit" times,
// and tries to return something each time in the locals something0,
// something1, something2, .., but only "something0" shows up in the
return list
cap prog drop recr
prog recr, rclass
args count stopit
if `count' == `stopit' {
return local something`count' = -99
}
else {
return local something`count' = uniform()
local k = `count' +1
recr `k' `stopit'
}
end
// Start count at 0, run 5 times
recr 0 5
ret list
macros:
r(something0) : ".2769154107663781"
How could this be changed so as to accumulate something in the return
list at each recursive call?
Thanks,
=-=-=-==-=-=-==-=-=
Mike Lacy
Director of Graduate Studies, Department of Sociology
Colorado State University, Fort Collins CO 80523 USA
[email protected] (970) 491-6721 (voice)
http://www.colostate.edu/Depts/Sociology/graduate/graduate.html
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/