Giai thừa¶
Tóm lược nội dung
Bài này trình bày cách giải bài toán giai thừa bằng kỹ thuật đệ quy.
Bài toán¶
Yêu cầu:
Sử dụng kỹ thuật đệ quy, viết chương trình tính \(n!\), biết rằng \(0! = 1\) và \(1! = 1\).
Đầu vào:
Một số nguyên dương \(n\).
Đầu ra:
Một số nguyên là giai thừa của \(n\).
Bộ kiểm thử:
| STT | Đầu vào | Đầu ra |
|---|---|---|
| 1 | 0 | 1 |
| 2 | 1 | 1 |
| 3 | 6 | 720 |
| 4 | 21 | 51090942171709440000 |
Cách giải đề xuất¶
Ý tưởng chính¶
Ta có công thức truy hồi tính giai thừa như sau:
Theo công thức trên:
-
Trường hợp cơ sở:
n == 0hoặcn == 1.Với trường hợp này, hàm đệ quy không cần gọi đệ quy nữa, mà chỉ trả về
1. -
Trường hợp đệ quy: các giá trị \(n\) còn lại. Giả sử không nhập
nnguyên âm.Với trường hợp này, hàm đệ quy sẽ gọi lại chính nó, tham số truyền vào là
n - 1để tính \((n - 1)!\), rồi nhân thêm \(n\).Ví dụ:
Để tính \(5!\), hàm đệ quy sẽ gọi lại chính nó để tính \((5 - 1)! = 4!\), rồi nhân thêm \(5\).Cụ thể:
- Hàm
factorial(5)sẽ gọi đệ quyfactorial(4). - Hàm
factorial(4)sẽ gọi đệ quyfactorial(3). - Hàm
factorial(3)sẽ gọi đệ quyfactorial(2). - Hàm
factorial(2)sẽ gọi đệ quyfactorial(1). - Hàm
factorial(1)không gọi đệ quy nữa, mà sẽ trả về1.
- Hàm
Viết chương trình¶
-
Viết hàm
factorial()gồm có một tham số làn. -
Viết chương trình chính.
-
Chạy chương trình trên, kết quả như sau:
Mã nguồn¶
Code đầy đủ được đặt tại: