0
ハスケルでは、整数のリストを受け取って2つの隣接する数値の最大の積を返す関数を持つ必要がある問題を解決しようとしています。再帰関数中の値を保持する
例:[5,6,1,3,9]が30を返すであろう、それは5の生成物と6
ある関数fの種類がこのようなものであろう:
f :: [Int] -> Int
私は、このようなパターンで2つのヘッド要素を得るリストを反復するために再帰を使用して解決することを考えました:(x1:x2:xs)
問題は、現在の製品が最後のものよりも大きい場合に比較する製品の値を保持する方法がわかりません製品。
アイデア?
空リストの場合はどうなりますか?または1つの要素を持つリスト? –
隣接する数字のすべての組でリストを作成する方法を考えてもいいですか?f [5,6,1,3,9] == [(5,6)、(6,1)、(1,3) )、(3,9)] '? – Ryan
もう一つの可能性は、中間結果(あなたの現在の最大値)として使用される追加の引数を持つ再帰ヘルパー関数 'go'を作ることでしょう。問題:初期値を見つけなければならない。したがって、あなたの関数と中間結果の戻り値の型を 'Maybe Int'に変更することを検討してください。 – mschmidt