Java 为什么此代码会在结果中添加1?

Java 为什么此代码会在结果中添加1?,java,recursion,Java,Recursion,如果If(n>0)它返回正常结果,但是If(n>=0)它返回正常结果+1,我不理解,因为0*0=0。如果有人知道为什么会这样,我很想弄清楚 import java.util.*; // Recursive method returns sum of first n squares public class RecursiveSum { public static void main(String[] args) { while (true) {

如果
If(n>0)
它返回正常结果,但是
If(n>=0)
它返回正常结果+1,我不理解,因为0*0=0。如果有人知道为什么会这样,我很想弄清楚

import java.util.*;

// Recursive method returns sum of first n squares
public class RecursiveSum
{
    public static void main(String[] args)
    {
        while (true)
        {
            Scanner keyboard = new Scanner(System.in);

            System.out.println("Enter a number:\tIf you want to exit, enter a negative number.");

            int n = keyboard.nextInt();

            if (n < 0)
                System.exit(0);

            System.out.println("sum(" + n + ") = " + sum(n));
        }
    }

    public static int sum(int n)
    {
        int sum2 = n * n;

        if (n >= 0)
            sum2 += sum(n - 1);

        return sum2;
    }
}
import java.util.*;
//递归方法返回前n个平方和
公共类递归和
{
公共静态void main(字符串[]args)
{
while(true)
{
扫描仪键盘=新扫描仪(System.in);
System.out.println(“输入一个数字:\t如果要退出,请输入一个负数”);
int n=keyboard.nextInt();
if(n<0)
系统出口(0);
System.out.println(“sum(“+n+””)=“+sum(n));
}
}
公共静态整数和(整数n)
{
int sum2=n*n;
如果(n>=0)
sum2+=和(n-1);
返回sum2;
}
}
如果(n>=0)
使用-1作为参数递归调用方法本身。如果(n>=0)使用-1作为参数递归调用方法本身,则
sum(-1)==-1*-1==1
。和
sum(-1)=-1*-1==1
sum(0-1)
->
sum(-1)
-1*-1
->
返回1
求和(0-1)
求和(-1)
->
-1*-1
返回1