java—如何构建只使用for循环列出一组阶乘的代码?

gev0vcfq  于 2021-07-08  发布在  Java
关注(0)|答案(3)|浏览(393)

我对java比较陌生,因为我目前正在研究如何使用for循环。如何严格使用for循环来编写连续的阶乘字符串?例如,我想在一个字符串中编写最多5个阶乘-我的问题是我的代码只打印出1个阶乘。
输入:

int b = 1;
    int a = 1;
    for(int c = 1; c <= b; c++)
    {
        a = a * c;
    }
    System.out.print(a);
}

预期产出:1 2 6 24 120

kr98yfug

kr98yfug1#

您需要将print语句放入for循环中。

int b = 5;
int a = 1;
for (int c = 1; c <= b; c++) {
    a = a * c;
    System.out.print(a + " ");
}
jw5wzhpr

jw5wzhpr2#

如果你想打印从1到n的阶乘,那么很明显,你需要迭代每个编号,然后对于每个编号,你可以调用一个单独的函数来计算它的阶乘。这样代码将更简单和模块化。
这里n=5

void findFactorials(int n){
     for(int i=1;i<=n:i++) {
          System.out.println(findFactorialOfI(i)+” “)
     }
}
int findFactorialOfI(int x){
     int fact=1;
     for(int i=x:i>=1;i—){
         fact=fact*i:
     }
     return fact;
}

如果您需要将结果存储到一个字符串中,那么不用直接在那里打印它,而是使用下面的字符串生成器,并将appendin保留在一个空的空间中,该空间将把返回的整数转换为字符串,并在每个阶乘结果之间引入一个空格。

StringBuilder sb = new StringBuilder();
for(int i=1;i<=n:i++) {
    sb.append(findFactorialOfI(i)+” “);
}
System.out.println(sb.toString());

另一个解决方案-
因为我们正在打印从1到n的连续数的阶乘。这可以在一个for循环中完成。

void findFactorial(int n){
    int fact=1;
    StringBuilder sb = new StringBuilder();
    sb.append(1+" ");
    for(int i=2;i<=n;i++){
       fact=fact*i;
       sb.append(fact+" ");
    }
    System.out.println(sb.toString());
}
zqdjd7g9

zqdjd7g93#

要在计算时打印每个阶乘,请将print语句移到循环内:

for(int c = 1; c <= b; c++) {
    a = a * c;
    System.out.print(a);
}

要在最后一起打印,请累积结果并在最后打印:

StringBuilder result = new StringBuilder();
for(int c = 1; c <= b; c++) {
    a = a * c;
    result.append(" ");
    result.append(a);
}
System.out.println(result.toString().trim());

相关问题