是否存在以下Java算法algo7
的等效算法,该算法不使用for循环或while循环,而是使用递归?
private static int algo7(int[] a) {
int s=0;
for (int i = 0; i < a.length-1; i++) {
for (int j = i; j <a.length; j++) {
if (a[i] > a[j]) {
s = s + a[i] * a[j];
}
}
}
return s;
}
非常感谢:)
浮出水面:最简单的将其表示为两个例程。第一个在可能的值中前进'j',第二个在'i'中前进。
int accumulate_j(int i, int j) {
if (j >= a.length)
return 0;
else
return (a[i] > a[j] ? a[i] * a[j] : 0) + accumulate_j(i, j+1);
int accumulate_i(int i) {
if (i >= a.length - 1)
return 0;
else
return accumulate_j(i, i) + accumulate_i(i+1);
int s = accumulate_i(0);
未经编译,测试或其他任何操作,因此您必须从这里获取它。