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 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:
Để lại một bình luận