首页 > 解决方案 > 将 2 个数字作为输入并找到这些数字的阶乘以及介于两者之间的每个数字的程序?

问题描述

这段代码应该采用 2 个数字并找到每个数字之间的阶乘并包含所述数字。但是,我没有得到正确的输出,也无法弄清楚我做错了什么。

Scanner scan = new Scanner(System.in);
long result = 1;
int m = scan.nextInt();
int n = scan.nextInt();
scan.close();

if (n > 0 && m > 0)             //want factorial greater than zero
for(int j = n; j <= m; j++)
{
    for(int i = 1; i <= j; i++)
    {
        result = result * i;    //find factorial
    }
    System.out.println(result);
}
    if(n <= 0 || m <= 0)        //if value is les than zero
    {
        System.out.println("Not Valid!");
    }

标签: javaloopsjava.util.scannercomputer-sciencefactorial

解决方案


类似的东西应该可以工作:

public class RangeFactorial {
    public static void main(String[] args) throws Exception {
        Scanner scan = new Scanner(System.in);
        int max = scan.nextInt();
        int min = scan.nextInt();

        if (max < 0 || min < 0) {
            System.out.println("Invalid Params");
        }

        for (int i = min; i <= max; i++) {
            System.out.println("Factorial for " + i + " is: " + factorial(i));
        }

        scan.close();
    }

    private static int factorial(int i) {
        if (i <= 1) {
            return 1;
        }

        return i * factorial(i-1);
    }
}

请注意,代码假定 max/min 到位,我省略了从给定输入中确定 max/min 整数的逻辑。你需要添加这个。


推荐阅读