因子总和错误

时间:2013-11-04 22:00:53

标签: java eclipse recursion

我正在尝试编写一个程序来计算最多为阶乘的阶乘之和。所以,如果我给它3它将返回3! + 2! + 1!到目前为止,这是我的代码:

import java.math.BigInteger;
import java.util.Scanner;


public class sumOfFactorial { 

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        System.out.println(sum(n));

    }

    public static BigInteger sum(int n) {
        return factorial(n).add(sum(n-1));
    }

    public static BigInteger factorial(int n) {
        BigInteger x = BigInteger.valueOf(n);
        if (n == 1) return BigInteger.ONE;
        else return x.multiply(factorial(n-1)); //error occurs here
    }
}

由于某种原因,它在指定的位置给出了堆栈溢出错误。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

您正在嵌套两个递归方法sumfactorial。但是,您的sum递归方法没有基本情况。与factorial一样,它必须具有基本情况。请确保sum停止在基本情况下递归,在您的情况下,n等于1

答案 1 :(得分:2)

你的一个问题就在这里

public static BigInteger sum(int n) {
    return factorial(n).add(sum(n-1));
}

public static BigInteger sum(int n) {
    if(n > 1){
      return factorial(n).add(sum(n-1));
    } else if (n < 0){
      throw new IllegalArgumentException("factorials are not defined for negative integers");
    } else {
      return BigInteger.ONE;
    }
}