给定数字n,找到该数字的阶乘

时间:2018-07-16 15:50:15

标签: java

输出是错误的,因为它只是将第二个数字与其自身相乘。

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]);
    }

}

2 个答案:

答案 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