Bài viết chia sẻ thuật toán với cách tính n giai thừa trong C/C+ áp dụng hai cách thức đệ quy cùng khử đệ quy. Một việc hay dành riêng cho các bạn học lập trình.

Bạn đang xem: Công thức tính giai thừa


1. Trình làng bài toán

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

Đề bài bác đại loại hoàn toàn 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 xử lý bài toán, chúng ta cần hiểu định nghĩa về n! (n là một số trong những 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 sệt biệt: 0! = 1


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

2. Tính giai thừa thực hiện vòng lặp

Cách tính thứ nhất này sẽ đơn giản và dễ dàng hơn cách sử dụng đệ quy. Và nó được gọi là bí quyết khử đệ quy bởi vì nó tránh khỏi việc bắt buộc dùng mang lại đệ quy. Tùy theo trường hợp cơ mà đệ quy cùng khử đệ quy có ưu điểm khác nhau.

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

Khai báo một biến hóa để lưu giá trị và gán nó bởi 1: giai_thua = 1 sử dụng vòng lặp chạy i từ là một đến n tiếp nối gán: giai_thua = giai_thua*i

Code C/C++:

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

3. Tính giai thừa thực hiện đệ quy

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

Xem thêm: Xem Tuổi Kết Hôn Nam Canh Thìn Hợp Với Tuổi Nào Nhất Trong Hôn Nhân

Ở bài này, ta bao gồm công thức tổng thể n giai vượt là : n!=n*(n-1)!Chính bởi thế, ta cũng thực hiện lệnh truy vấn hồi dựa trên công thức này. Điều kiện ngừng ở đó là khi n =1 (vì ta tính tích các 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 chi tiêu 2 cách: Cách áp dụng đệ quy nhằm tính giai thừa gồm vẻ bài bản hơn. Tuy nhiên cách áp dụng vòng lặp có vận tốc nhanh không kém đệ quy, thậm trí là cấp tốc hơn.Trong cách câu hỏi thực tế, nếu để chắt lọc thì những lập trình viên sẽ sử 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à thứ hạng int, bởi vì thế chỉ rất có thể chạy lúc 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:


*