不使用任何循环将迭代算法转换为递归算法

问题描述 投票:0回答:1

是否存在以下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;
    }

非常感谢:)

arrays recursion iteration
1个回答
0
投票

浮出水面:最简单的将其表示为两个例程。第一个在可能的值中前进'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);

未经编译,测试或其他任何操作,因此您必须从这里获取它。

© www.soinside.com 2019 - 2024. All rights reserved.