我需要编写一个递归方法,它需要两个并行数组和单词来查找,查找指定的单词并在另一个数组上每次索引匹配时求和值。例如:
array1="丰田","本田","本田","丰田","丰田",...... n
array2 = 22500, 18000, 29000, 22500, 32000, ....... n
如果我说我需要查找单词"丰田"
,它应该在找到索引时对第二个数组上的值求和。在这种情况下,它应该求和,22500 22500 32000
。
如何使我的递归方法使其采用适当的参数并递归地进行计算。我将使用硬编码值。
这是我目前所拥有的。我很确定我的递归方法需要更多参数,但我会看看是否有人能帮助我
static int printRecursively(int A[], int N) {
if(N <= 0) {
return 0;
}
return (printRecursively(A, N - 1) + A[N -1]);
}
}
以下类似的东西可能适合您的需要
public static int recursiveSum(String search, String[] names, int[] values, int start) {
// Check that the two arrays are of the same length
// And that start does not exceed the bounds of either
if((names.length != values.length) || start > names.length)
return 0;
// If the value at the 'start' of the array is the one we're looking for
if(names[start].equals(search)) {
return values[start] + recursiveSum(search, names, values, start + 1);
} else {
// Otherwise just skip onto the next value of the arrays
return recursiveSum(search, names, values, start + 1);
}
}
recursiveSum("Toyota", names, values, 0)
我认为您当前的数据结构不适合这个问题。相反,我建议使用汽车到值的哈希图:
Map<String, List<Integer>> map = new HashMap<>();
List<Integer> values = Arrays.asList(22500, 22500, 32000);
map.put("Toyota", values);
values = Arrays.asList(18000, 29000);
map.put("Honda", values);
然后,为了获得给定汽车的值之和,我们可以很容易地使用流:
int sum = map.get("Toyota").stream().reduce(0, (a, b) -> a + b);
一般来说,实现这一点的一个好方法是在汽车是钥匙的位置表示数据,并且值指向钥匙所指向的内容。
从位置0的“光标”开始。然后返回该位置的数字总和,以及从与cursor 1
相同的方法调用返回的任何总和。如果cursor 1
没有任何内容,这意味着您已经到达数组的末尾,在这种情况下只需返回该位置的数字。
public static void main(String[] args) {
String arr1[] = new String[]{"Toyota", "Honda", "Honda", "Toyota", "Toyota"};
int arr2[] = new int[]{22500, 18000, 29000, 22500, 32000};
System.out.println(getSum(arr1, arr2, "Toyota", 0));
}
private static int getSum(String arr1[], int arr2[], String word, int cursor) {
if (cursor == arr1.length - 1) return arr1[arr1.length - 1].equals(word) ? arr2[arr2.length - 1] : 0;
return arr1[cursor].equals(word)
? arr2[cursor] + getSum(arr1, arr2, word, cursor + 1)
: getSum(arr1, arr2, word, cursor + 1);
}
输出
77000
在PHP中,检查数组是否为递归数组的最佳方法是什么? 给定以下代码: 从PHP手册: print\u r()在到达数组的第三个元素时将显示递归。 似乎没有其他方法可以扫描数组中的递归引用,因此如果需要检查它们,则必须使用print\u r()及其第二个参数来捕获输出并查找单词RECURSION。 还有更优雅的检查方式吗? 附:这就是我如何使用regex和print\u r()检查和获取递归数组键的
问题内容: 对于需要解决的问题之一,我使用for循环找到了数组的最大值,因此我尝试使用递归找到它,这就是我想出的: 因此它可以正常工作并获取最大值,但是我的问题是:对于基本情况,返回a [head]以及对于在开头处的值大于最后一个值的情况,可以吗? 问题答案: 您只需一个计数器即可轻松完成此操作,只需使用您这次想要比较的值的索引即可: 这样可以更好地显示正在发生的情况,并使用默认的“递归”布局,例
我想知道我可以在给定的数组中计算2条特定路径吗。 > < li> 如何返回从[0][0]到[m][n]的最短(或最长)路径?我设法递归地遍历数组,但是我不知道如何“保存”路径并检查哪一个返回的路径更小。 第二个请求是一个我已经纠结了很长时间的问题,但我看到了关于使用和计算这些数组中的值的其他问题。
本文向大家介绍C++ 中二分查找递归非递归实现并分析,包括了C++ 中二分查找递归非递归实现并分析的使用技巧和注意事项,需要的朋友参考一下 C++ 中二分查找递归非递归实现并分析 二分查找在有序数列的查找过程中算法复杂度低,并且效率很高。因此较为受我们追捧。其实二分查找算法,是一个很经典的算法。但是呢,又容易写错。因为总是考虑不全边界问题。 用非递归简单分析一下,在编写过程中,如果编写的是以下的代
问题内容: 可以说我有下表 基本上,要求是将所有经理拉到您要搜索的user_id下。因此,例如,如果我发送“ Linda”,则它应该返回我: 或者,如果我发送“ Mark”,那么它应该返回我: 我听说过递归函数,但不确定如何执行。任何帮助,将不胜感激。 问题答案: 使用: 结果集: 脚本: