java - 程序的 Java 阶乘计算不能做 0,1,2 我该如何解决这个问题
问题描述
// Factorial Calculation
double factorial = 1;
factorial = firstNumber;
for(double i = factorial-1; i > 1; i--){
factorial = factorial * i;
// Makes result equal to the firstNumber
result = factorial;
// To continue the program
continue;
}
// Displays the result for factorial
System.out.println("factorial of " + firstNumber + " is " + form.format(result));
// To continue the program
continue;
所以我必须通过使用 switch 语句来计算计算器,除了当我进行阶乘计算时,如果我输入 0,1 或 2,答案总是 0,但从 3 到 10,答案总是正确的。所以 firstNumber 是用户输入的变量。阶乘是它将计算的数字,我必须这样做,所以当我显示我的消息时,firstNumber 等于数字而不是结果。
解决方案
您result
可能已初始化为0
(例如int result = 0;
)。
发生的情况是,当您输入一个小于 的数字时3
,这意味着factorial-1
小于2
,并且由于我们正在处理整数,这意味着不大于1
。循环的条件是i
必须大于,1
所以你永远不会进入循环,也result
永远不会改变它的初始值。快速解决方法可能是简单地更改i > 1
为i > 0
; 无论如何乘以没有坏处1
。
您还应该初始化result
为1
,因为您不会为值0
和输入循环1
,但这很好,因为它们的阶乘都是1
。
推荐阅读
- javascript - 防止复制过去并在 Blackboard 中单击鼠标右键
- c# - 即使我们关闭应用程序,WPF应用程序也会运行后台,任何人都可以建议我
- python - 在 pythonanywhere.com 中运行 WSGI 应用程序时出错
- python - 用美丽的汤在 HTML 标记之间获取文本
- jquery - 仅将类添加到视口中的元素
- android - 如何在 Android 应用程序的日历视图中添加事件?
- python - 如何在 python 上使用带有 selenium 的希伯来语?
- awk - 根据使用 awk 对先前记录的计数更新特定列中的字段
- sql - 如何计算分组查询中每行 COUNT(*) 总和的百分比?- SQL
- oracle - 使用 SQL 和 APEX 创建授权方案