如何解决这个递归函数难题?

时间:2016-03-18 08:01:02

标签: java arrays recursion

在公司面试时,面试官问我这个问题。

假设我们有一个这样的数组:

int[] arr = {2,12,14,-16,18,22,45};

他们告诉我编写一个函数来获取数组的总和。

那么如何通过使用函数得到这个数组的总和,并给出以下条件:

条件1:我不能使用任何全局变量。 Means数组也定义了函数内部。

条件2:我必须使用递归函数。

编码应该在java中。


我没有在这里发布代码,因为这个问题在面试时问我,我无法找到解决这个问题的方法。我在stackoverflow上找到了一些解决方案,但在这些解决方案中没有人在函数内部定义数组。

2 个答案:

答案 0 :(得分:2)

同样做点什么,

int[] arr = {2,12,-6};

System.out.println(recur(arr, arr.length-1)); // output : 8

.......

int recur(int arr[] , int lastindex){

        if(lastindex == 0 ){
            return arr[lastindex];
        }

        return arr[lastindex] + recur(arr, lastindex-1);

    }

答案 1 :(得分:0)

试试这个。

static int sum(int[] array, int index) {
    if (index >= array.length)
        return 0;
    else
        return array[index] + sum(array, index + 1);
}

    int[] arr = {2,12,14,-16,18,22,45};
    System.out.println(sum(arr, 0));
    // -> 97