Viết chương trình tính tổng giai thừa java

Đề bài: Viết chương trình sử dụng ngôn ngữ lập trình Java thực hiện tính S = 1! + 2! + 3! + 4! + 5!
Yêu cầu kiến thức:

  • Xác định đúng kiểu dữ liệu cho các biến
  • Xử lý vòng lặp for trong quá trình tính giai thừa

Code tham khảo dưới đây được viết trên JDK ver 8.x:


package timoday;

public class Main {

    // Ham tinh Giai thua
    public static long tinhGiaiThua(int n) {
        long gt = 1;
        for (int i = 1; i <= n; i++) {
            gt *= i;
        }
        return gt;
    }

    public static void main(String[] args) {
        long S = 0;
        for (int i = 1; i <= 5; i++) {
            S += tinhGiaiThua(i);
        }
        System.out.println("Tong cac giai thua la: " + S);
    }
}


Kết luận:

  • Bạn có thể tham khảo thêm khóa học lập trình C từ cơ bản đến nâng cao. Xem tại đây
  • Bạn có thể tham khảo thêm khóa học Thành thạo lập trình C#. Xem tại đây

Các thẻ: lap trinhLập trình Java

Có thể bạn sẽ thích…

Trong bài tập này chúng ta sẽ thực hiện chương trình tính giai thừa trong Java. Đây là một dạng bài tập cơ bản giúp các bạn nắm vững về các vòng lặp trong Java.

Viết chương trình tính tổng giai thừa java

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Chúng ta sẽ viết ba chương trình java để tìm giai thừa của một số.

  1. Sử dụng cho vòng.
  2. Sử dụng vòng lặp while.
  3. Tìm giai thừa của một số được nhập bởi người dùng.

Trước khi đi qua chương trình, hãy hiểu thế nào là giai thừa: Giai thừa của một số n được ký hiệu là n! và giá trị của n! là: 1 * 2 * 3 * … *(n-1) * n.

Ví dụ 1: Chương trình tính giai thừa trong Java sử dụng vòng lặp For.

Trong ví dụ này chúng ta sẽ tinh giai thừa của số number = 5, sau đó gán kết quả cho biến fact. Và cuối cùng là hiển thị fact ra màn hình kết quả.

Bài viết này được đăng tại [free tuts .net]

public class GiaiThua {
    public static void main(String[] args) {
        int number = 5;
        long fact = 1;
        for(int i = 1; i <= number; i++)
        {
            fact = fact * i;
        }
        System.out.println("Giai thừa của "+number+" là: "+fact);
        System.out.println();
        System.out.println("----------------------------");
        System.out.println("Chương trình này được đăng tại Freetuts.net");
    }
}

Kết quả:

Ví dụ 2: Chương trình tính giai thừa trong Java sử dung vòng lặp While.

Cũng tương tự như ví dụ trên, chúng ta sẽ dùng vòng lặp While để tính giai thừa cho số number = 5, rồi sau đó hiển thị kết qua ra màn hình.

public class GiaiThua {
    public static void main(String[] args) {
        int number = 5;
        long fact = 1;
        int i = 1;
        while(i<=number)
        {
            fact = fact * i;
            i++;
        }
        System.out.println("Giai thừa của "+number+" là: "+fact);
        System.out.println();
        System.out.println("----------------------------");
        System.out.println("Chương trình này được đăng tại Freetuts.net");
    }
}

Kết quả:

Ví dụ 3: Chương trình tính giai thừa trong Java với đầu vào từ người dùng.

Trong ví dụ này chúng ta sẽ dùng vòng lặp For để tính giai thừa của một số mà do người dùng nhập vào, bằng cách sử dụng lớp Scanner.

import java.util.Scanner;
public class GiaiThua {
    public static void main(String[] args) {
        int number;
        System.out.println("Nhập vào số cần tính: ");
        Scanner scanner = new Scanner(System.in);
        number = scanner.nextInt();
        scanner.close();
        long fact = 1;
        int i = 1;
        while(i<=number)
        {
            fact = fact * i;
            i++;
        }
        System.out.println("Giai thừa của "+number+" là: "+fact);
        System.out.println("----------------------------");
        System.out.println("Chương trình này được đăng tại Freetuts.net");
    }
}

Kết quả:

Như vậy là chúng ta đã thực hiện xong chương trình tính giai thừa trong Java. Chúc các bạn thực hiện thành công!!!



Viết chương trình tính giai thừa của một số nguyên.

Định nghĩa : giai thừa của 1 số là tích các số liên tiếp từ 1 đến số đó. Trường hợp đặc biệt, giai thừa của 0 và 1 là 1.

Ví dụ: giai thừa của 5 là 1*2*3*4*5 = 120



Lời giải

Có 2 cách để viết chương trình tính giai thừa trong java:

  • Tính giai thừa không sử dụng đệ quy
  • Tính giai thừ có sử dụng đệ quy

Tính giai thừa không sử dụng đệ quy

Ví dụ chương trình tính giai thừa trong java không sử dụng phương pháp đệ quy:

public class GiaiThuaDemo1 {

    /**
     * main
     * 
     * @author viettuts.vn
     * @param args
     */
    public static void main(String[] args) {
        int a = 5;
        int b = 0;
        int c = 10;

        System.out.println("Giai thừa của " + a + " là: " 
                + GiaiThuaDemo1.tinhGiaithua(a));
        System.out.println("Giai thừa của " + b + " là: " 
                + GiaiThuaDemo1.tinhGiaithua(b));
        System.out.println("Giai thừa của " + c + " là: " 
                + GiaiThuaDemo1.tinhGiaithua(c));
    }
    
    /**
     * tinh giai thua
     * 
     * @author viettuts.vn
     * @param n: so nguyen duong
     * @return giai thua cua so n
     */
    public static long tinhGiaithua(int n) {
        long giai_thua = 1;
        if (n == 0 || n == 1) {
            return giai_thua;
        } else {
            for (int i = 2; i <= n; i++) {
                giai_thua *= i;
            }
            return giai_thua;
        }
    }
}

Kết quả:

Giai thừa của 5 là: 120
Giai thừa của 0 là: 1
Giai thừa của 10 là: 3628800



Tính giai thừa có sử dụng đệ quy

Ví dụ chương trình tính giai thừa trong java có sử dụng phương pháp đệ quy:

public class GiaiThuaDemo2 {

    /**
     * main
     * 
     * @author viettuts.vn
     * @param args
     */
    public static void main(String[] args) {
        int a = 5;
        int b = 0;
        int c = 10;

        System.out.println("Giai thừa của " + a + " là: " 
                + GiaiThuaDemo2.tinhGiaithua(a));
        System.out.println("Giai thừa của " + b + " là: " 
                + GiaiThuaDemo2.tinhGiaithua(b));
        System.out.println("Giai thừa của " + c + " là: " 
                + GiaiThuaDemo2.tinhGiaithua(c));
    }

    /**
     * tinh giai thua
     * 
     * @author viettuts.vn
     * @param n: so nguyen duong
     * @return giai thua cua so n
     */
    public static long tinhGiaithua(int n) {
        if (n > 0) {
            return n * tinhGiaithua(n - 1);
        } else {
            return 1;
        }
    }
}

Kết quả:

Giai thừa của 5 là: 120
Giai thừa của 0 là: 1
Giai thừa của 10 là: 3628800