如何解决显示整个计算以获取数字的阶乘java
运行程序后得到的输出:
5的阶乘是120
5 * 4 * 3 * 2 * 1 = 120
public static int calculateFactorial(int numInput) {
int factorial = 1;
for (int i = 1; i <= numInput; i++) {
factorial = factorial *i;
}
return factorial;
}
解决方法
public static String calculateFactorialStr(int val) {
String res = IntStream.range(0,val)
.map(i -> val - i)
.mapToObj(String::valueOf)
.collect(Collectors.joining(" * "));
return res + " = " + calculateFactorial(val);
}
public static long calculateFactorial(int val) {
long res = 1;
for (int i = 2; i <= val; i++)
res *= i;
return res;
}
,
静态方式: 在函数中创建字符串(不对n
public static String calculateFactorial(int numInput) {
StringBuilder res = new StringBuilder();
int factorial = 1;
for (int i = 1; i <= numInput; i++) {
res.append(String.valueOf(i));
if (i != numInput) {
res.append(" * ");
}
factorial = factorial *i;
}
res.append(" = ").append(factorial);
return res.toString();
}
面向对象的方式: 如果您了解Java面向对象的知识,那么也可以创建一个Factorial类(不对n
import java.util.ArrayList;
import java.util.List;
public class Factorial {
private int number;
private int result;
public Factorial(int numInput) {
number = numInput;
int factorial = 1;
for (int i = 1; i <= numInput; i++) {
factorial = factorial * i;
}
result = factorial;
}
@Override
public String toString() {
StringBuilder res = new StringBuilder();
for (int i = 0; i <= number; i++) {
res.append(i);
if (i != number) {
res.append(" * ");
}
}
res.append(" = " + result);
return res.toString();
}
}
然后您可以使用System.out.println(new Factorial(n));
打印结果
public static String calculateFactorial(int numInput) {
int factorial = 1;
String calc = "";
for (int i = 1; i <= numInput; i++) {
if (i != 1) {
calc += " * ";
}
calc += i;
factorial = factorial * i;
}
calc += " = " + factorial;
return calc;
}
或者,如果您喜欢x *(x-1)* ... * 1
public static String calculateFactorial(int numInput) {
int factorial = 1;
String calc = "";
for (int i = numInput; i > 0; i--) {
if (i != numInput) {
calc += " * ";
}
calc += i;
factorial = factorial * i;
}
calc += " = " + factorial;
return calc;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。