1つの配列が2番目の配列(私の例もサブ配列)に含まれているかどうかをチェックする再帰関数を作成しようとしていますが、trueまたはfalseを返します。
例:[d, e]
に含まれている[a, b, c, d, e, f]
。
再帰なしで(forループを使用して)チェックする方法は知っていますが、再帰を使用した解決策を考えることはできません。
原則は次のとおりです。
0)最初の配列が2番目の配列よりも長い場合、それはサブ配列ではありません。
1)2番目の配列が最初の配列([a、b]や[a、b、c、d]など)で始まる場合、それはサブ配列です。
2)その他:最初の配列が2番目の配列の末尾のサブ配列(つまり、最初の要素の後の部分)である場合、それはサブ配列です。
念のために言っておきますが: tail([a,b,c,d]) == [b,c,d]
(Javaでそれがどのように呼ばれるかわからないので)
ハッシュを使用して大きな配列の要素をハッシュテーブルに格納し、サブ配列の各要素がハッシュテーブルにあるかどうかを確認できます。すべての要素が見つかった場合は、サブ配列になります。