19/11/2018, 19:41

Tính giai thừa trong C++

Học lập trình C++ Định nghĩa giai thừ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 Có 2 cách để viết chương trình tính giai thừa trong C++: Tính giai thừa không sử ...

Học lập trình C++

Định nghĩa giai thừ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

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

  • 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 C++ không sử dụng phương pháp đệ quy:

/**
 * Tinh giai thua KHONG dung phuong phap de quy
 *  
 * @author viettuts.vn
 */

#include <iostream>
 
using namespace std;

/**
 * tinh giai thua
 * 
 * @author viettuts.vn
 * @param n: so nguyen duong
 * @return giai thua cua so n
 */
long tinhGiaithua(int n) {
	int i;
    long giai_thua = 1;
    if (n == 0 || n == 1) {
        return giai_thua;
    } else {
        for (i = 2; i <= n; i++) {
            giai_thua *= i;
        }
        return giai_thua;
    }
}

/**
 * Ham main
 */
int main() {
    int a = 5;
    int b = 0;
    int c = 10;
    cout << "Giai thua cua " <<  a << "la: " << tinhGiaithua(a) << endl;
    cout << "Giai thua cua " <<  b << "la: " << tinhGiaithua(b) << endl;
    cout << "Giai thua cua " <<  c << "la: " << tinhGiaithua(c) << endl;
}

Kết quả:

Giai thua cua 5  la: 120
Giai thua cua 0  la: 1
Giai thua cua 10  la: 3628800

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

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

/**
 * Tinh giai thua KHONG dung phuong phap de quy
 *  
 * @author viettuts.vn
 */

#include <iostream>
 
using namespace std;

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

/**
 * Ham main
 */
int main() {
    int a = 5;
    int b = 0;
    int c = 10;
    cout << "Giai thua cua " <<  a << "la: " << tinhGiaithua(a) << endl;
    cout << "Giai thua cua " <<  b << "la: " << tinhGiaithua(b) << endl;
    cout << "Giai thua cua " <<  c << "la: " << tinhGiaithua(c) << endl;
}

Kết quả:

Giai thua cua 5  la: 120
Giai thua cua 0  la: 1
Giai thua cua 10  la: 3628800
Học lập trình C++
0