【问题标题】:Recursive function to add elements in an array递归函数在数组中添加元素
【发布时间】:2015-03-31 13:39:41
【问题描述】:

我编写了一个递归函数来总结数组中的元素。我对以下程序的行为感到困惑和困惑。

public class Recursion{

private static int array[] = new int[]{4,6,7,2,3};

public static void main(String argv[]){

    int result = sum(0 , 5);
    System.out.println("The result is "+result);
  }

  private static int sum(int number, int index){

    if (index==0){
        return 0;
    }
    return number + sum(array[index-1], index-1) ;

  }
}

上述程序返回 18 作为答案。有人可以详细说明上述程序,因为我哪里出错了。

【问题讨论】:

    标签: java arrays recursion


    【解决方案1】:

    正如所写,调用树扩展为:

    sum(0, 5)
    0 + sum(3, 4)
    0 + 3 + sum(2, 3)
    0 + 3 + 2 + sum(7, 2) 
    0 + 3 + 2 + 7 + sum(6, 1)
    0 + 3 + 2 + 7 + 6 + sum(4, 0)
    0 + 3 + 2 + 7 + 6 + 0
    

    sum(4, 0) 满足条件index==0,所以它返回 0。它应该返回 number,即 4。

    if (index==0){
        return number;
    }
    

    【讨论】:

      【解决方案2】:

      您正在跳过总和中数组的第一个元素。到达递归结束时返回array[0]

        private static int sum(int number, int index){
      
          if (index==0){
              return array[0];
          }
          return number + sum(array[index-1], index-1) ;
      
        }
      

      【讨论】:

        【解决方案3】:

        您没有从数组的第一个位置添加值。

        而不是:

        if (index==0){
            return 0;
        }
        

        尝试返回 array[index]number 而不是 0。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-09-18
          • 2014-08-07
          • 2021-01-17
          • 1970-01-01
          • 1970-01-01
          • 2013-10-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多