program recaman; a := {[0,0]}; loop for i in [1..14] do extend(a); end loop; print("First 15:", [a(n) : n in [0..14]]); loop doing n := extend(a); until #(rept:=[[r,i] : r = a(i) | r=n]) > 1 do pass; end loop; print("First repetition:", n, "at", {x:x in rept}{n}); proc extend(rw a); n := max/ domain a; t := a(n) - n-1; if t<0 or t in range a then t := a(n) + n+1; end if; return a(n+1) := t; end proc; end program;