This essay Fibonacci Sequence by Roger gives examples of double recursion and single recursion
http://www.jsoftware.com/docs/help701/dictionary/dmcapdot.htm Kip Murray Sent from my iPad On Feb 11, 2013, at 7:40 AM, Don Guinn <[email protected]> wrote: > Also, the x and y in explicit definitions are local names so are unique > from x and y of a calling explicit definition. That includes recursion. > > On Mon, Feb 11, 2013 at 6:31 AM, km <[email protected]> wrote: > >> Perhaps this Vocabulary entry for Memo M. will help >> >> http://www.jsoftware.com/docs/help701/dictionary/dmcapdot.htm >> >> There is also Self Reference $: >> >> http://www.jsoftware.com/docs/help701/dictionary/dmcapdot.htm >> >> Kip Murray >> >> Sent from my iPad >> >> >> On Feb 11, 2013, at 7:04 AM, Alex Giannakopoulos <[email protected]> >> wrote: >> >>> Are there any resources on recursive programming in J? Couldn't find >> much >>> by searching. >>> I would particularly like to know about scoping, and also so-called free >>> variables. >>> >>> It seems to me that the enforced naming of variables as 'x' and 'y' might >>> cause problems in nested functions, necessitating awkward renaming and >>> copying. >>> >>> I will give a little example here (my apologies to those unfamiliar with >>> Scheme.) >>> I am trying to write a routine that will return ALL the factors of a >>> number, not just the prime ones. >>> I do this by using an auxiliary routine that takes the number to factor >> and >>> a list of numbers still to combine. >>> >>> ;; function (unique numlist) corresponds to J's ~. >>> ;; function (remel alist elem) corresponds to J's [ }.~ [: >: i. >>> ;; function (primefactors n) corresponds to J's q: >>> >>> (define (allfactors n) (af n (primefators n)) >>> >>> (define (af num divisors) >>> (if (null? divisors) (list num) >>> (let ((uniquefactors (unique divisors))) >>> (flatten >>> (cons num >>> (map (lambda(x) (af (/ num x) (remel divisors x))) >>> uniquefactors)))))) >>> >>> Now I tried to express this in J, but can't even get to first base, >> because >>> of the scoping problems I mentioned. >>> I realise that recursion is not the primary mode for programming J, and a >>> good solution may instead use something like running totals (\), but for >>> the time being I am stuck. >>> Any suggestions gratefully received. >>> ---------------------------------------------------------------------- >>> For information about J forums see http://www.jsoftware.com/forums.htm >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
