递归求和整数数组中的 [英] recursively sum the integers in an array

查看:165
本文介绍了递归求和整数数组中的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有我试图做出类使用递归返回数组中的所有整数之和的程序。下面是我的计划迄今:

 公共类SumOfArray {私人诠释[]一个;
私人诠释N;
私人诠释的结果;    公众诠释sumOfArray(INT [] A){      this.a =一;
      N =则为a.length;      如果(N == 0)//基本情况
      结果= 0;
      其他
          结果=一个[n]的+ sumOfArray(一个[N-1]);      返回结果;   } //结束SumOfArray方法} //结束SumOfArray类

但我发现了三个错误这是所有相关的,我相信,但我想不通为什么它是找到一个类型为null:

  SumOfArray.java:25:sumOfArray(INT [])中SumOfArray不能应用到(int)的
    结果=一个[n]的+ sumOfArray(一个[N-1]);
                    ^
SumOfArray.java:25:运营商+不能用于为int,sumOfArray
    结果=一个[n]的+ sumOfArray(一个[N-1]);
              ^
SumOfArray.java:25:不兼容的类型
发现:其中,nulltype引起>
要求:INT
    结果=一个[n]的+ sumOfArray(一个[N-1]);
                  ^
3个错误


解决方案

解决方案是简单的比它看起来,试试这个(假设非零长度数组):

 公众诠释sumOfArray(INT []一,INT N){
    如果(N == 0)
        返回[N];
    其他
        返回[n]的+ sumOfArray(一个中,n-1);
}

这样称呼它:

  INT [] A = {1,2,3,4,5};
INT总和= sumOfArray(一,则为a.length-1);

I have a program that I'm trying to make for class that returns the sum of all the integers in an array using recursion. Here is my program thus far:

public class SumOfArray {

private int[] a;
private int n;
private int result;

    public int sumOfArray(int[] a) {

      this.a = a;
      n = a.length;

      if (n == 0)  // base case
      result = 0;
      else
          result = a[n] + sumOfArray(a[n-1]);

      return result;

   } // End SumOfArray method

} // End SumOfArray Class 

But I'm getting three error which are all related, I believe, but I can't figure out why it is finding a type of null:

SumOfArray.java:25: sumOfArray(int[]) in SumOfArray cannot be applied to (int)
    result = a[n] + sumOfArray(a[n-1]);
                    ^
SumOfArray.java:25: operator + cannot be applied to int,sumOfArray
    result = a[n] + sumOfArray(a[n-1]);
              ^
SumOfArray.java:25: incompatible types
found   : <nulltype>
required: int
    result = a[n] + sumOfArray(a[n-1]);
                  ^
3 errors

解决方案

The solution is simpler than it looks, try this (assuming an array with non-zero length):

public int sumOfArray(int[] a, int n) {
    if (n == 0)
        return a[n];
    else
        return a[n] + sumOfArray(a, n-1);
}

Call it like this:

int[] a = { 1, 2, 3, 4, 5 };
int sum = sumOfArray(a, a.length-1);

这篇关于递归求和整数数组中的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆