我的名字是山姆,我是java的初学者.我实际上已经尝试了这个"阶乘"程序,我无法看到逻辑出错了......我没有得到预期的输出,可以有谁告诉我为什么?在此先感谢,grt日向所有用户:)
阶乘:
import java.util.*;
class factorial {
public static void main(String[] args) {
int i;
System.out.println("enter a number");
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int x=n;
while(x!=0) {
x=x*(n-1);
n--;
}
System.out.println(x);
}
}
Run Code Online (Sandbox Code Playgroud)
当我输入(例如)5时,我希望获得5(120)的事实.相反,我得到零.所有输入都会发生这种情况
如果您真的想学习,请逐行开始运行代码,例如:
int n = 5;
int x = n;
while (x != 0) {
x = x * (n - 1);
n--;
}
Run Code Online (Sandbox Code Playgroud)
从一张纸开始,这样:
x | n
-----+-----
|
|
|
|
Run Code Online (Sandbox Code Playgroud)
并且,当您"执行"每一行时,记下新值.做到这一点,你的问题就在哪里.它还将使您成为更好的开发人员.
请不要不看这个答案的其余部分,直到你已经做到了,并试图修复它.
一旦你理解了这个问题并(希望)修复它,请将你的解决方案与下面的解决方案进行比较:
int n = 5; // input value.
int x = 1; // initial accumulator set to identity (n * 1 = n).
while (n != 0) { // use all values from n down to 1 (inclusive).
x = x * n; // multiply accumulator by that value.
n--; // get next value.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |