再帰と反復は、「何ができるか」という点では同等です。反復の代わりに再帰を使用する理由は、特定のアルゴリズムの記述方法を単純化するためです。たとえば、バイナリツリーを再帰的にトラバースすると、反復的に実行しようとするよりも明確なコードが生成されます。クイックソートを再帰的に作成する方が、繰り返し作成するよりも簡単でクリーンです。再帰は、単にプログラムスタックを利用して状態を格納する行為です。スタックを自分で格納することにより、再帰アルゴリズムを反復アルゴリズムに変換できます。しばらくの間、Racketのような言語で作業することをお勧めします。これは私の言葉よりもはるかにうまく頭に浮かぶでしょう。
通常、頻繁に削除する必要がある配列の代わりにリストを使用し、特定の要素に頻繁にアクセスする必要はありません。配列からの削除はO(n)、削除された要素の後のすべてを1つのインデックス左にシフトする必要があるための操作です。キューは必ずしもリスト構造ではなく、配列を使用して表すことができます。キューとスタックは、幅優先および深さ優先グラフ検索などの多くのアルゴリズムで役立ちます。このためのデータ構造とアルゴリズムの本を入手することをお勧めします。特定のデータ構造が有用である理由をアルゴリズムに説明させることは非常に貴重です。