Java 递归函数检查子数组

Java 递归函数检查子数组,java,arrays,recursion,Java,Arrays,Recursion,我试图编写一个递归函数来检查一个数组是否包含在第二个数组中(我的示例也是子数组),并返回true或false 例如:[d,e]包含在[a,b]中​​, c、 d、e、f] 我知道如何在没有递归的情况下进行检查(使用for循环),但想不出使用递归的解决方案。原理如下: 0)如果第一个数组比第二个数组长,则它不是子数组 1) 如果第二个数组以第一个数组开始(如[a,b]和[a,b,c,d]),那么它是一个子数组 2) Else:如果第一个数组是第二个数组尾部的子数组(也就是说,第一个元素后面的部分

我试图编写一个递归函数来检查一个数组是否包含在第二个数组中(我的示例也是子数组),并返回true或false

例如:
[d,e]
包含在
[a,b]中​​, c、 d、e、f]


我知道如何在没有递归的情况下进行检查(使用for循环),但想不出使用递归的解决方案。

原理如下:

0)如果第一个数组比第二个数组长,则它不是子数组

1) 如果第二个数组以第一个数组开始(如[a,b]和[a,b,c,d]),那么它是一个子数组

2) Else:如果第一个数组是第二个数组尾部的子数组(也就是说,第一个元素后面的部分),那么它就是子数组


为了确保:
tail([a,b,c,d])==[b,c,d]
(因为我不知道在Java中是如何调用的。)

您可以使用哈希将大数组的元素存储在哈希表中,然后检查子数组的每个元素是否在哈希表中,如果找到所有元素,那么它将是子数组。

没有递归,你的解决方案是什么?这个问题已经在这里得到了回答:我不能使用循环,只有递归子数组有一个非常精确的定义。[bc]是[abcd]的子数组,但[cb]不是。元素必须确保子数组是数组的“一部分”,这一点很重要。我假设OP是在寻找子数组,而不是子集,所以实际上第一个是第二个的中缀。虽然他在描述中明确提到了子阵列,但从质量上看,这确实不清楚——这就是我选择这个算法的原因。我将试图澄清这一点。