>>72
> そうすると再帰的な関数で組めるかかなり不安です(´・ω・`)

簡単に書けるよ。二変数A, Bを取る末尾再帰の関数で、
f (A:入力リスト) (B:空リスト) で呼び出して、
で入力Aを削りつつ、Bを書き換えていって、Aが無くなったらBをかえす。