Viết chương trình tính giai thừa của 1 số nguyên dương

      19

Bài viết share thuật toán cùng phương pháp tính n giai thừa trong C/C+ sử dụng nhì cách thức đệ quy cùng khử đệ quy. Một bài bác toán thù xuất xắc giành riêng cho các bạn học lập trình.

Bạn đang xem: Viết chương trình tính giai thừa của 1 số nguyên dương


1. Giới thiệu bài bác toán

Giai vượt là 1 bài tân oán kinh khủng trong lập trình sẵn, nó là 1 trong bài toán thù cơ mà bản thân tin là bất kể các bạn làm sao mới học tập đa số bắt buộc trải qua. Bài toán này để giúp đỡ các bạn hiểu được thuật tân oán đệ quy hoặc sử dụng nhuần nhuyễn vòng lặp.

Đề bài đại loại có thể tóm tắt lại như sau: Tính n giai quá cùng in công dụng ra màn hình hiển thị, n nhtràn lên từ bỏ keyboard.

Trước khi giải quyết bài bác toán, bọn họ đề nghị gọi định nghĩa về n! (n là một số nguyên dương): n giai quá là tích của n số nguyên dương thứ nhất.Công thức tổng quát: n! = n*(n-1)!Trường thích hợp quánh biệt: 0! = 1


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

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

Cách tính đầu tiên này đã đơn giản rộng phương pháp sử dụng đệ quy. Và nó được call là phương pháp khử đệ quy cũng chính vì nó tránh được bài toán yêu cầu cần sử dụng đến đệ quy. Tùy từng trường phù hợp nhưng đệ quy và khử đệ quy bao gồm ưu thế khác nhau.

Xem thêm: “Ứa Nước Miếng” Với Cách Làm Sườn Bò Nướng Sa Tế Cay Nồng, Sườn Bò Nướng Sa Tế Thơm Ngon Khó Cưỡng

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

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

Code C/C++:

// giai thảm bại su dung vong lapint giaithualap(int n){int giai_chiến bại = 1; for (int i = 1; i

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

Để làm rõ rộng thuật tân oán này trước tiên bạn nên tìm hiểu thuật toán thù đệ quy.

Tại bài này, ta có công thức tổng thể n giai quá là : n!=n*(n-1)!Chính vì vậy, ta cũng sử dụng lệnh truy nã hồi dựa trên công thức này. Điều kiện dừng chân ở đó là khi n =1 (do ta tính tích các số bước đầu từ bỏ 1)

Code C/C++:

// tinc giai chiến bại 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 quá có vẻ chuyên nghiệp rộng. Tuy nhiên phương pháp sử dụng vòng lặp bao gồm tốc độ nhanh không hề kém đệ quy, thậm trí là nhanh khô hơn.Trong phương pháp bài toán thực tế, ví như để chọn lựa thì những lập trình viên đã sử dụng cách 1 để tránh tối thiểu vấn đề áp dụng đệ quy.

Chụ ý: Tại trên đây kiểu dáng dữ liệu của hàm mình để là loại int, cũng chính vì cầm cố chỉ rất 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 de quy su dung vong lapint giaithualap(int n){int giai_thua trận = 1; for (int i = 1; i >n;coutKết trái chạy cmùi hương trình:


*