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é!!!
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ả:
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ả:
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 !!!