LATEST

Tính giai thừa của một số trong C / C++

Trong bài viết này, codehow sẽ hướng dẫn các bạn cách tính giai thừa của một số trong C / C++. Đây là một dạng bài tập thường gặp khi bắt đầu học bất kì một ngôn ngữ lập trình nào.

Trước khi đi vào viết chương trình, chúng ta hãy cũng tìm hiểu sơ qua giai thừa của một số là gì và cách tính nó như thế nào đã nhé!!!

Trong toán học, giai thừa là toán tử tập hợp các số tự nhiên. Giả sử ta có n! (n giai thừa) thì khi đó n! là tích của n số tự nhiên đầu tiên.

bai5 01 png

Ví dụ: 5! sẽ bằng tích của n số đầu tiên là 1 x 2 x 3 x 4 x 5.

*Lưu ý: Khi tính giai thừa, số hạng đầu tiên bắt đầu từ 1 nhé, nếu bắt đầu từ 0 thì kết quả luôn bằng 0 mất rồi.

Ngoài ra, ta có thể định nghĩa đệ quy n! như sau:

  • 0! = 1.
  • (n + 1)! = n! x (n + 1) với n > 0.

Vậy làm thế nào để tính giai thừa của một số trong C / C++, thì ngay bây giờ hãy bắt đầu cùng mình thôi nào.

Tính giai thừa của một số trong C / C++

Trong chương trình này, mình sẽ sử dụng vòng lặp for để tính giai thừa của một số trong C / C++/. Cụ thể như sau:

Yêu cầu người dùng nhập vào một số cần tính, sử dụng vòng lặp for lặp từ 1 đến số đó. Bên trong vòng lặp for, ta sẽ lấy giaithua = giaithua * i. Cứ như vậy cho đến khi kết thúc vòng lặp.

for (int i = 1; i <= n; i++)
        giai_thua *= i;

Hãy xem đoạn chương trình dưới đây để hiểu rõ hơn nữa nhé.

Chương trình C:

#include <stdio.h>

int giaiThua(int);

int main(void) {
  int n;
  printf("Nhập vào số cần tính giai thừa: ");
  scanf("%d", &n);
  printf("%d giai thừa = %d", n, giaiThua(n));
  
  printf("\n----------------------------\n");
  printf("chương trình này được đăng tại codehow.net");
}

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 C++:

#include <iostream>
using namespace std;
//khai báo hàm fibonacci_series()
int giaiThua(int);

int main()
{
    int n;
    cout<<"Nhập vào số cần tính giai thừa: ";
    cin>>n;
    cout<<n<<" giai thừa = "<<giaiThua(n);
   
    cout<<"\n----------------------------\n";
    cout<<"chương trình này được đăng tại codehow.net";
}

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

Kết quả:

bai5 02 png

Tính giai thừa của một số trong C / C++ sử dụng hàm đệ quy

Trong chương trình này mình sẽ sử dụng đệ quy để tính giai thừa của một số trong C / C++. Cách làm này tối ưu hơn rất nhiều và được các lập trình viên đánh giá cao hơn việc sử dụng các vòng lặp.

Đầu tiên ta sẽ tạo một hàm đệ quy để tính giai thừa của một tham số truyền vào.

int find_factorial(int n)
{
   if(n==0)
      return(1);
   return(n*find_factorial(n-1));
}

Sau đó thực hiện yêu cầu người dùng nhập vào một số cần tính giai thừa, rồi gọi hàm và truyền tham số đó vào trong hàm. Hiển thị kết quả ra màn hình, hãy xem đoạn chương trình dưới đây.

Chương trình C:

#include <stdio.h>

int find_factorial(int);

int main(void) {
  int n;
  printf("Nhập vào số lượng các số giai thừa: ");
  scanf("%d", &n);
  printf("%d giai thừa = %d", n, find_factorial(n));
  
  printf("\n----------------------------\n");
  printf("chương trình này được đăng tại codehow.net");
}

int find_factorial(int n)
{
   if(n==0)
      return(1);
   return(n*find_factorial(n-1));
}

Chương trình C++:

#include <iostream>
using namespace std;
//khai báo hàm fibonacci_series()
int find_factorial(int);

int main()
{
    int n;
    cout<<"Nhập vào số cần tính giai thừa: ";
    cin>>n;
    cout<<n<<" giai thừa = "<<find_factorial(n);
   
    cout<<"\n----------------------------\n";
    cout<<"chương trình này được đăng tại codehow.net";
}

int find_factorial(int n)
{
   if(n==0)
      return(1);
   return(n*find_factorial(n-1));
}

Kết quả:

bai5 03 png

Như vậy là chúng ta đã cùng nhau tìm hiểu về cách tính giai thừa của một số trong C / C++. Các bạn hãy luyện tập thật nhiều để rèn luyện tư duy logic với các bạn toán phức tạp hơn nhé. Trong serries bài tập C / C++ codehow có rất nhiều dạng bài tập, các bạn có thể tham khảo nhé, cảm ơn các bạn rất nhiều !!!

Cùng chuyên mục:

Xóa node khỏi cây nhị phân tìm kiếm

Xóa node khỏi cây nhị phân tìm kiếm

Tìm node Max và Min trong cây nhị phân tìm kiếm

Tìm node Max và Min trong cây nhị phân tìm kiếm

Xuất node con và node lá trong cây nhị phân tìm kiếm

Xuất node con và node lá trong cây nhị phân tìm kiếm

Tìm kiếm trên cây nhị phân tìm kiếm

Tìm kiếm trên cây nhị phân tìm kiếm

Duyệt cây nhị phân tìm kiếm

Duyệt cây nhị phân tìm kiếm

Thêm node vào cây nhị phân tìm kiếm

Thêm node vào cây nhị phân tìm kiếm

Cây nhị phân (Binary tree) là gì? Cơ chế hoạt động của nó

Cây nhị phân (Binary tree) là gì? Cơ chế hoạt động của nó

Cách gộp hai danh sách liên kết đôi

Cách gộp hai danh sách liên kết đôi

Tìm kiếm phần tử trong DSLK đôi

Tìm kiếm phần tử trong DSLK đôi

Xóa node trong DSLK đôi

Xóa node trong DSLK đôi

Chèn node (Insert node) vào DSLK đôi

Chèn node (Insert node) vào DSLK đôi

Duyệt danh sách liên kết đôi

Duyệt danh sách liên kết đôi

Tạo node mới trong DSLK đôi

Tạo node mới trong DSLK đôi

DSLK đôi là gì? Cấu trúc dữ liệu của DSLK đôi

DSLK đôi là gì? Cấu trúc dữ liệu của DSLK đôi

Quản lý sinh viên bằng DSLK đơn

Quản lý sinh viên bằng DSLK đơn

Tìm kiếm và sắp xếp trong DSLK đơn

Tìm kiếm và sắp xếp trong DSLK đơn

Xóa node (Delete node) trong DSLK đơn

Xóa node (Delete node) trong DSLK đơn

Chèn node (Insert node) vào DSLK đơn

Chèn node (Insert node) vào DSLK đơn

Tạo node mới trong DSLK đơn

Tạo node mới trong DSLK đơn

Cấu trúc dữ liệu của DSLK đơn

Cấu trúc dữ liệu của DSLK đơn