link lists link math procedure main() local sequence, order, sol, i, original, initials, c original := [] while put(original, integer(read())) sequence := copy(original) order := 0 until c := constant(sequence) do { sequence := delta(sequence) order +:= 1 if *sequence = 0 then stop("No recurrence relation found") } if c > 0 then order +:= 1 initials := original[1+:order] sol := [] every i := 1 to order do put(sol, (-1 ^ (i + 1)) * binocoef(order, i)) write("recurrence of order ", order) write("coefficients: ", limage(sol)) write("initial values: ", limage(initials)) end procedure delta(seq) local deltaseq, i deltaseq := [] every i := 2 to *seq do put(deltaseq, seq[i] - seq[i - 1]) return deltaseq end procedure constant(seq) local c c := seq[1] if !seq ~= c then fail else return c end