RosettaCodeData/Task/Hailstone-sequence/APL/hailstone-sequence-1.apl

19 lines
574 B
APL
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
⍝ recursive dfn:
dfnHailstone{
c ⍝ last element
1=c:1 ⍝ if it is 1, stop.
,(1+2|c)(c÷2)(1+3×c) ⍝ otherwise pick the next step, and append the result of the recursive call
}
⍝ tradfn version:
seqhailstone n;next
⍝ Returns the hailstone sequence for a given number
seqn ⍝ Init the sequence
:While n1
next(n÷2) (1+3×n) ⍝ Compute both possibilities
nnext[1+2|n] ⍝ Pick the appropriate next step
seq,n ⍝ Append that to the sequence
:EndWhile