5! = 5 * 4 * 3 * 2 * 1。
我对此没有任何问题。但我注意到我的程序,如果我输入说3.5!它将返回一个定义的数字。
你如何计算它们?
我的程序中有这样的东西
public class fact {
public static void main(String args[]) {
double factorial=1;
System.out.println("Type a number");
double number= sc.nextDouble(); /*I am using scanner*/
while (number !=0 ){
factorial = factorial * number;
number--;
}
System.out.println(factorial);
}
}
答案 0 :(得分:5)
其正常定义中的因子仅针对正整数定义。如果要计算任何实数的阶乘,请查看 Gamma函数。
答案 1 :(得分:2)
事情是: factorial 对于整体,正面数字非常简单。
概念可以也应用于浮点数,但背后的数学可以被视为advanced。
所以:退一步;并理解概念背后的数学;在实施这个概念之前!
换句话说;您必须决定是否打算将程序更改为使用 int 数字(已验证为> 0);或者如果您打算允许浮点数。如果后者是你的目标;那么你的简单实现就不会再做了。
除此之外:你想首先研究浮点数的概念。假设像
这样的循环是误解double number = ...
while (number !=0 ) {
..
number--;
}
使用浮点数而不是int / long时,总会停止!相反......
答案 2 :(得分:0)
即使对于3.5,您也可以获得定义的值,因为您的代码将按如下方式计算:
1*3.5*2.5*1.5*0.5
但实际上它是3.5的错误值!正确的值是:11.6317283966
。您的方法仅对整数输入有效。有关十进制阶乘的更多信息,请参阅此处:
this link