我的代码必须获取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);
}
}
}
答案 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