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:

Danh sách liên kết (Linked List) là gì? Các loại danh sách liên kết

Danh sách liên kết (Linked List) là gì? Các loại danh sách liên kết

Sử dụng đệ quy để giải bài toán tháp Hà Nội

Sử dụng đệ quy để giải bài toán tháp Hà Nội

Đệ quy tương hỗ (Mutual Recursion) trong C / C++

Đệ quy tương hỗ (Mutual Recursion) trong C / C++

Đệ quy lồng (Nested Recursion) trong C / C++

Đệ quy lồng (Nested Recursion) trong C / C++

Đệ quy đa tuyến (Exponential Recursion) trong C / C++

Đệ quy đa tuyến (Exponential Recursion) trong C / C++

Đệ quy nhị phân (Binary Recursion) trong C / C++

Đệ quy nhị phân (Binary Recursion) trong C / C++

Đệ quy đuôi (Tail Recursion) trong C / C++

Đệ quy đuôi (Tail Recursion) trong C / C++

Đệ quy tuyến tính (Linear Recursion) trong C / C++

Đệ quy tuyến tính (Linear Recursion) trong C / C++

Hàm đệ quy là gì? Các loại hàm đệ quy trong C / C++

Hàm đệ quy là gì? Các loại hàm đệ quy trong C / C++

Thuật toán sắp xếp Quick Sort trong C / C++

Thuật toán sắp xếp Quick Sort trong C / C++

Thuật toán sắp xếp trộn (Merge Sort) trong C / C++

Thuật toán sắp xếp trộn (Merge Sort) trong C / C++

Thuật toán sắp xếp chọn (Selection Sort) trong C / C++

Thuật toán sắp xếp chọn (Selection Sort) trong C / C++

Thuật toán sắp xếp chèn (Insertion Sort) trong C / C++

Thuật toán sắp xếp chèn (Insertion Sort) trong C / C++

Thuật toán sắp xếp nổi bọt (Bubble Sort) trong C / C++

Thuật toán sắp xếp nổi bọt (Bubble Sort) trong C / C++

Thuật toán tìm kiếm nội suy (Interpolation Search) trong C / C++

Thuật toán tìm kiếm nội suy (Interpolation Search) trong C / C++

Thuật toán tìm kiếm nhị phần (Binary Search) trong C / C++

Thuật toán tìm kiếm nhị phần (Binary Search) trong C / C++

Thuật toán tìm kiếm tuyến tính (Linear Search) trong C / C++

Thuật toán tìm kiếm tuyến tính (Linear Search) trong C / C++

Thuật toán kiểm tra năm nhuận trong C / C++

Thuật toán kiểm tra năm nhuận trong C / C++

Thuật toán kiểm tra số chẵn lẻ trong C / C++

Thuật toán kiểm tra số chẵn lẻ trong C / C++

Thuật toán tính lũy thừa trong C / C++

Thuật toán tính lũy thừa trong C / C++

Top