Bài viết chia sẻ thuật toáncách tính n giai thừa trong C/C+ thực hiện hai phương pháp đệ quy cùng khử đệ quy. Một bài toán hay dành riêng cho chúng ta học lập trình.

Bạn đang xem: Hàm tính giai thừa trong c


1. Ra mắt bài toán

Giai thừa là 1 trong những bài toán kinh khủng trong lập trình, nó là một trong những bài toán nhưng mà mình tin là bất kể bạn nào bắt đầu học đều buộc phải trải qua. Việc này để giúp bạn đọc được thuật toán đệ quy hoặc thực hiện thành thành thạo vòng lặp.

Đề bài đại loại rất có thể tóm tắt lại như sau: Tính n giai thừa và in kết quả ra màn hình, n nhập vào từ bỏ bàn phím.

Trước khi giải quyết bài toán, chúng ta cần hiểu quan niệm về n! (n là một vài nguyên dương): n giai quá là tích của n số nguyên dương đầu tiên.Công thức tổng quát: n! = n*(n-1)!Trường hợp quánh biệt: 0! = 1


*
Công thức tính giai thừa

2. Tính giai thừa sử dụng vòng lặp

Cách tính thứ nhất này sẽ dễ dàng hơn cách sử dụng đệ quy. Và nó được gọi là cách khử đệ quy cũng chính vì nó tránh được việc đề xuất dùng đến đệ quy. Tùy theo trường hợp nhưng mà đệ quy và khử đệ quy có ưu thế khác nhau.

Tư tưởng giải quyết:

Khai báo một thay đổi để lưu cực hiếm và gán nó bởi 1: giai_thua = 1 sử dụng vòng lặp chạy i từ 1 đến n kế tiếp gán: giai_thua = giai_thua*i

Code C/C++:

// giai thua kém su dung vong lapint giaithualap(int n){int giai_thua = 1; for (int i = 1; i

3. Tính giai thừa sử dụng đệ quy

Để hiểu rõ hơn thuật toán này trước tiên bạn nên mày mò thuật toán đệ quy.

Xem thêm: Nếu Là Con Chim Chiếc Lá Con Chim Phải Hót Chiếc Lá Phải Xanh

Ở bài xích này, ta tất cả công thức bao quát n giai vượt là : n!=n*(n-1)!Chính vì chưng thế, ta cũng thực hiện lệnh truy hồi dựa trên công thức này. Điều kiện giới hạn ở đó là khi n =1 (vì ta tính tích những số bắt đầu từ 1)

Code C/C++:

// tinh giai thua thảm su dung de quyint factorial(int n)if(n==1)return 1;return(n*factorial(n-1));Đánh túi tiền 2 cách: Cách sử dụng đệ quy để tính giai thừa gồm vẻ chuyên nghiệp hóa hơn. Mặc dù cách thực hiện vòng lặp có tốc độ nhanh không kém đệ quy, thậm trí là cấp tốc hơn.Trong cách việc thực tế, ví như để tuyển lựa thì những lập trình viên sẽ áp dụng cách 1 để hạn chế ít tuyệt nhất việc áp dụng đệ quy.

Chú ý: Ở trên đây kiểu tài liệu của hàm mình nhằm là dạng hình int, chính vì thế chỉ có thể chạy khi n using namespace std;// n! su dung de quyint factorial(int n)if(n==1)return 1;return(n*factorial(n-1));// nn! khu vực de quy su dung vong lapint giaithualap(int n){int giai_thua = 1; for (int i = 1; i >n;coutKết trái chạy chương trình:


*