Cách tính giai thừa trong C/C++

Bài 39. Cách tính giai thừa trong C/C++

Cách tính giai thừa trong c/c++ ? Bài viết này mình sẽ giới thiệu với các bạn cách tính giai thừa bằng phương pháp đệ quy và không dùng đệ quy.

Cách tính giai thừa trong C/C++
Công thức tính giai thừa trong toán học

Cách tính giai thừa bằng phương pháp đệ quy

  • Một số n! được định nghĩa như sau: n! = n*(n-1)*…*3*2*1
  • Trường hợp đặc biệt ta quy ước 0! =1
  • Công thức truy hồi: n! = n*(n-1)!

Từ công thức truy hồi ta có thể xây dựng một hàm đệ quy để tính giai thừa như sau:

int giaiThua(int n)
{
    if (n == 1)
        return 1;
    return n * giaiThua(n - 1);
}
  • Nếu n == 1 thì ta trả về giá trị 1.
  • Nếu không phải thì ta dùng công thức truy hồi để tính (n-1)!

Từ đây ta có thể viết chương trình tính giai thừa bằng code C++

#include <iostream>
using namespace std;
int giaiThua(int n)
{
    if (n == 1)
        return 1;
    return n * giaiThua(n - 1);
}
int main()
{
    int n;
    cin >> n;
    cout << "Giai thua " << n << " la: " << giaiThua(n);
    return 0;
}

Sau khi chạy chương trình trên ta có kết quả

6
Giai thua 6 la: 720

Code C

#include <stdio.h>
int giaiThua(int n)
{
    if (n == 1)
        return 1;
    return n * giaiThua(n - 1);
}
int main()
{
    int n;
    scanf("%d", &n);
    printf("Giai thua %d la: %d", n, giaiThua(n));
    return 0;
}
6
Giai thua 6 la: 720

Cách tính giai thừa bằng phương pháp lặp

  • Đầu tiên khởi tạo một biến giaithua với giá trị bằng 1;
  • Cho vòng lặp chạy từ 1 đến n. Với mỗi giá trị của i thì ta gán giaithua = giaithua*i;

Từ đây ta viết hàm tính giai thừa như sau:

int giaiThua(int n)
{
    int giai_thua = 1;
    for (int i = 1; i <= n; i++)
        giai_thua *= i;
    return giai_thua;
}

Chương trình tính giai thừa bằng phương pháp lặp dùng code C++

#include <iostream>
using namespace std;
int giaiThua(int n)
{
    int giai_thua = 1;
    for (int i = 1; i <= n; i++)
        giai_thua *= i;
    return giai_thua;
}
int main()
{
    int n;
    cin >> n;
    cout << "Giai thua " << n << " la: " << giaiThua(n);
    return 0;
}
4
Giai thua 4 la: 24

Bài viết mình đến đây là kết thúc. Cám ơn các bạn đã theo dõi!

Theo dõi lập trình không khó tại:

Similar Posts

Subscribe
Notify of
guest
9 Bình luận
Inline Feedbacks
View all comments