我正在尝试编写一个递归函数来检查一个数组是否包含在第二个数组中(我的示例也是子数组)并返回真或假。
例如:[d, e]
包含在[a, b, c, d, e, f]
.
我知道如何在没有递归的情况下进行检查(使用 for 循环),但想不出使用递归的解决方案。
原理如下:
0) 如果第一个数组比第二个长,则它不是子数组。
1) 如果第二个数组以第一个数组开头(如 [a,b] 和 [a,b,c,d]),则它是子数组。
2)否则:如果第一个数组是第二个数组尾部的子数组(即第一个元素之后的部分),那么它就是一个子数组。
只是为了确定:(tail([a,b,c,d]) == [b,c,d]
因为我不知道在 Java 中是如何调用的。)
您可以使用哈希将大数组的元素存储在哈希表中,然后检查子数组的每个元素是否存在于哈希表中,如果找到所有元素,则它将是子数组。