java - 将 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!");
}
解决方案
类似的东西应该可以工作:
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 整数的逻辑。你需要添加这个。
推荐阅读
- javascript - 有人可以从事件循环的角度向我解释一下吗?
- docker - 本地 Docker 桌面 Kubernetes 集群中的 KubeCF API 端点
- arrays - 为什么这个数组只需要 3 个元素?
- google-cloud-platform - 如何在 Google Compute VM 上使用 terraform 进行 ip 转发
- mysql - 为什么MySQL降低浮点精度并恢复不会改变数字?
- ios - 在 SwiftUI 中以编程方式循环播放 iOS 实时照片
- s4 - S4 对象数据提取
- python - 将 Excel/VBA 转换为 Python
- java - 可复位倒计时锁存器
- javascript - 我应该多彻底地检查 JavaScript 中可能出现的错误?