consider the meaning of if. 0 1 2 <: 0 OK? --- Den søn 16/8/09 skrev Martin Kreuzer <[email protected]>:
> Fra: Martin Kreuzer <[email protected]> > Emne: [Jprogramming] Recursive function (newbie level) > Til: [email protected] > Dato: søndag 16. august 2009 15.14 > Hi all - > > While doing a little piece on computing Fibonacci numbers > and the > Golden ratio, I came across this behaviour of recursive > functions > which I do not yet understand: > > (A) > Defining a simple range as > r:=. 2 + i.7 > 2 3 4 5 6 7 8 > I have been able to print e.g. a small table of sines > > r,. sin r > 2 0.909297427 > 3 0.141120008 > 4 _0.756802495 > 5 _0.958924275 > 6 _0.279415498 > 7 0.656986599 > 8 0.989358247 > > (B) > Playing around with the factorial I found that > > (B1) using this definition (from: Burke/Reiter, Brief > Reference) > fac=: 3 : 'if. y <: 1 do. 1 else. y * fac > y - 1 end.' > I will get > fac 5 > 120 > alright, but > > r,. fac r > 2 2 > 3 3 > 4 4 > 5 5 > 6 6 > 7 7 > 8 8 > which seems strange (at least to me). > > (B2) using this slightly more elaborate definition > fac=: 3 : 0 > n=. y > select. n > case. 0 do. f=. 1 > case. 1 do. f=. 1 > case. do. f=. n * > fac (n-1) > end. > f > ) > I will get > fac 5 > 120 > as above, but > > r,. fac r > |stack error: fac > | f=.n* fac(n-1) > > (C) > Something similar happens with ((sorry for probable too may > parentheses)) > fib=: 3 : 0 > n=. y > select. n > case. 0 do. f=. 0 > case. 1 do. f=. 1 > case. do. f=. > (fib (n-1)) + (fib (n-2)) > end. > f > ) > fib 13 > 233 > computes alright, but this throws an error > > r,. fib r > |stack error: fib > | f=.(fib(n-1))+( fib(n-2)) > > Could anybody shed some light on this..? Thanks, M. > > > > --- > avast! Antivirus: Outbound message clean. > Virus Database (VPS): 090815-0, 15.08.2009 > Tested on: 16.08.2009 13:14:34 > avast! - copyright (c) 1988-2009 ALWIL Software. > http://www.avast.com > > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > Find din nye laptop på kelkoo.dk. Se de gode tilbud her - http://dk.yahoo.com/r/pat/mm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
