如何创建n个数字的平方和的递归方法?

时间:2019-03-06 03:45:38

标签: java recursion methods

我的代码必须获取n个数字并以递归方法返回其平方和。

例如:1、2、2、3平方和必须为19(1 + 1 + 4 + 4 + 9)

由于某种原因,我的代码正在打印14。

import java.util.Scanner;

/**
 *
 * @author User
 */
public class SomaQuadrados {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
      Scanner teclado = new Scanner(System.in);
      int n = teclado.nextInt();
      int numero = 0;
      for(int i = 0; i < n; i++)
      {
           numero = teclado.nextInt();
      }

      System.out.println(somaQuadrados(numero));

    }

    public static int somaQuadrados(int numero)
    {
        if(numero == 0)
        {
            return 0;
        }
        else
        {
            return somaQuadrados(numero-1) + (numero*numero);
        }
    }

}

1 个答案:

答案 0 :(得分:0)

问题在于您的递归函数somaQuadrados()应该正在处理数字列表[1, 1, 2, 2, 3]。那就是:

<first number> * <first number> + somaQuadrados(<rest of numbers>)

,带有空列表的基本情况。但取而代之的是,您使用一个单独的数字进行计算:

<number> * <number> + somaQuadrados(<number - 1>)

这是一个完全不同的程序。处理最后一个元素3时,您得到14的{​​{1}}。

我希望该问题的解决方案更像是:

1 * 1 + 2 * 2 + 3 * 3