2017-02-07 4 views
0

私は3つの要素のリストをとり、これら3つの要素を使って作成された別のリストを返す再帰関数を書く必要があります。たとえば、私は[a、b、c]のようなリストを持っていて、関数は複数aをb回だけ必要とします。だから[2,3,5]は[2,6,18,54,162,486]のようなリストを作成しますリストを再帰的に構築するにはどうすればよいですか? ML

私はhd、tl、@、および:: list演算子を理解していますが、リストを作成する。

私はhd([2,3,5])* hd(tl([2,3,5])を乗算すると6つを得るでしょう。しかし、私はそれをどこに付けるのですか?私は3

答えて

1

Example net using function multiply

で最後の要素を掛け合わリストに深く行くためにすべての呼び出し上にある、あなたの再帰関数はリストを返すべきポイントを新しいロジックを必要とし、停止の要件を満たして呼び出します空のリスト(または何らかの開始リスト)を返すべきです。

この場合、関数は(a * b)を次の値のリストの先頭に追加します。減少するcはカウンタを提供し、一方、中間結果(a * b)は、ラインをさらに下回る計算のベースとなる。だからここでは、リストは、尾の最大値から頭の最小値まで、逆に増加する。

関連する問題