我试图找到9的阶乘到0,只使用一个while循环,但我的想法是不输出一个值。
我想出了使用两个while循环的方法:
int i;
count = 9;
while (count >= 0){
value = count;
i = count-1;
while (i > 0){
value = value * i;
i--;
}
System.out.print(value + ", ");
}
这很有用,但是我试图改变它只使用一个while循环并得到了这个:
int i;
for (count = 9; count < 0; count--){
value = count;
i = count-1;
while (i > 0){
value = value * i;
i--;
}
System.out.print(value + ", ");
}
我不完全确定我是否正确使用for语句,但我认为我是,或者至少我认为它应该输出一些东西,所以我可以调试它。
有人能给我一个正确方向的暗示吗?
答案 0 :(得分:4)
这将为您提供从9到1的所有因子:
int i=1;
int value=1;
String res = "";
while (i <= 9){
value = value * i;
res = value + ((i>1)?",":"") + res;
i++;
}
System.out.print(res);
输出:
362880,40320,5040,720,120,24,6,2,1
也许是在作弊,因为我按照从1!
到9!
的升序计算阶乘,但是我按顺序颠倒了输出的顺序得到所需的结果。
编辑:
如果你也想要0!要打印,一个小小的改变可以做到这一点:
int i=1;
int value=1;
String res = "";
while (i <= 10){
res = value + ((i>1)?",":"") + res;
value = value * i;
i++;
}
System.out.print(res);
输出:
362880,40320,5040,720,120,24,6,2,1,1
答案 1 :(得分:1)
首先分配value = i,然后运行循环。你可以只使用while循环获得阶乘。
重要提示:因为n!=n*(n-1)!
因此i--
必须在value = value * i
之前执行。
public static void main(String args[]) {
int value=5;
int i=value;
while (i > 1){
i--;
value = value * i;
}
System.out.print(value);
}
更新:如果你想计算0到9的阶乘,那么使用这个代码:(它还包括因子0)
public static void main(String args[]){
int countLowest=0;
int countHighest=9;
int value=1;
while (countLowest<= countHighest){
if(countLowest==0)
value = value * (countLowest+1);
else
value=value*countLowest;
countLowest++;
System.out.println("Factorial of "+(countLowest-1)+" is "+value);
}
}
<强>结果:强>
Factorial of 0 is 1
Factorial of 1 is 1
Factorial of 2 is 2
Factorial of 3 is 6
Factorial of 4 is 24
Factorial of 5 is 120
Factorial of 6 is 720
Factorial of 7 is 5040
Factorial of 8 is 40320
Factorial of 9 is 362880
答案 2 :(得分:1)
首先,你的第二个循环不起作用的原因是for
中的条件错误。中间的条件是导致循环继续,而不是停止。所以你所说的是“从9开始,在数字小于0时工作”。但是,当然,你的数字一开始就大于零。
其次,我认为使用for
循环有点作弊,因为for
循环只是while
循环的特定情况。
现在解决了阶乘本身的问题。你知道一个阶乘n!定义为(n-1)!* n。
计算一个特定阶乘的基本循环是:
int n = 5;
int factorial = 1;
while ( n > 0 ) {
factorial *= n;
n--;
}
System.out.println( "Factorial is: " + factorial );
这将给你五个阶乘。但它并不完全基于我们所谈论的公式。还有另一种计算方法,从1开始:
int n = 5;
int factorial = 1;
int count = 1;
while ( count <= n ) {
factorial *= count;
count++;
}
System.out.println( "Factorial is " + factorial );
关于这种方式的有趣部分是,在循环的每个阶段,factorial
实际上是值(count-1)!我们将它乘以计数。这正是我们谈论的公式。
关于它的好处是,在你做之前,你有前一个阶乘的价值。因此,如果您打印出来,那么您将获得所有因子的列表。所以这是一个修改过的循环,打印所有的阶乘。
int n = 9;
int factorial = 1;
int count = 0;
while ( count < n ) {
System.out.println( "Factorial of " + count + " is " + factorial );
count++;
factorial *= count;
}
System.out.println( "Factorial of " + n + " is " + factorial );
请注意,我对它进行了一些修改,以便它可以使用零。阶乘零是一个特例,所以我们不应该乘以零 - 这将使所有阶乘都错误。所以我在将count
增加到1之后才将循环更改为乘法。但这也意味着你必须在循环中打印最终的阶乘。
答案 3 :(得分:0)
count = 9;
sum=1;
while (count >= 1){
sum*=count;
--count;
}
System.out.print(sum);
它会给你9!= 362880