输出是错误的,因为它只是将第二个数字与其自身相乘。
import java.util.Scanner;
public class trybew {
void factorial(int n) {
long fact = 1;
for(int i=1; i<=n; i++) {
fact *= n;
System.out.println(" "+fact);
}
}
public static void main(String[] args) {
int cnt;
trybew f1= new trybew();
Scanner s= new Scanner(System.in);
System.out.println("Enter Test case ");
cnt=s.nextInt();
int n[]= new int[cnt];
for(int i=0; i<cnt; i++) {
System.out.println("ENter NO:: ");
n[i]=s.nextInt();
}
for(int i=0; i<cnt; i++)
f1.factorial(n[i]);
}
}
答案 0 :(得分:0)
void factorial(int n) {
long fact = 1;
for(int i=n; i>=1; i--)
fact *= i;
System.out.println(" "+fact);
}
答案 1 :(得分:0)
您的错误与代码fact *= n;
有关。您应该在此处使用i
。
更改
fact *= n;
收件人
fact *= i;
修改后的代码:-
import java.util.Scanner;
public class trybew {
void factorial(int n) {
long fact = 1;
for (int i = 1; i <= n; i++) {
fact *= i; // not *=n
System.out.println(" " + fact);
}
}
public static void trybew(String[] args) {
int cnt;
trybew f1 = new trybew();
Scanner s = new Scanner(System.in);
System.out.println("Enter Test case ");
cnt = s.nextInt();
int n[] = new int[cnt];
for (int i = 0; i < cnt; i++) {
System.out.println("ENter NO:: ");
n[i] = s.nextInt();
}
for (int i = 0; i < cnt; i++)
f1.factorial(n[i]);
}
}
输出:-
Enter Test case
2
ENter NO::
4
ENter NO::
5
1
2
6
24
1
2
6
24
120
最好在函数System.out.println(" " + fact);
的{{1}}之外使用for-loop
。