Chúng ta có tổng số bậc trong một cầu thang là n. Một người có thể lên đến tầng tiếp theo bằng cách bỏ qua 1, 2 hoặc 3 bước cùng một lúc. Mục tiêu là tìm ra số cách có thể đạt đến tầng tiếp theo bằng cách làm như vậy.
Chúng tôi sẽ sử dụng phương pháp đệ quy bằng cách lưu ý rằng để đạt được bất kỳ bước thứ i nào, một người phải nhảy từ bước thứ 1 (bỏ qua 1 bước), bước thứ 2 (bỏ qua 2 bước) hoặc bước thứ 3 ( bỏ qua 3 bước).
Hãy cùng hiểu với các ví dụ.
Đầu vào
N =3 bước
Đầu ra
Tổng số cách để đến cầu thang thứ n bằng cách sử dụng bước 1, 2 hoặc 3 là:4
Giải thích
Có tổng cộng 3 bước Nhảy từ đầu (bỏ qua 3):3 bước Nhảy từ bước 1 (bỏ qua 2):1 + 2 Nhảy từ bước thứ 2 (bỏ qua 1):2 + 1 Không bỏ qua 1 + 1 + 1Đầu vào
N =6 bướcĐầu ra
Số cách để đến cầu thang thứ n bằng cách sử dụng bước 1, 2 hoặc 3 là:24Giải thích
Có tổng cộng 6 bước Cách:1 + 1 + 1 + 1 + 1 + 1, 2 + 1 + 1 + 1 + 1, 3 + 1 + 1 + 1, 3 + 1 + 2, 3 + 2 + 1 , 3 + 3, v.v.Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
-
Chúng tôi đang thực hiện các bước số nguyên dưới dạng tổng số bước.
-
Hàmairs_step (int steps) lấy tất cả các bước làm đầu vào và trả về một số cách để đến tầng tiếp theo bằng cách thực hiện các bước nhảy hoặc không ..
-
Lấy số lượng biến ban đầu là 0 cho những cách như vậy.
-
Nếu số là 0 trả về 1.
-
Nếu số bước là 1 chỉ 1 chiều.
-
Nếu số bước là 2 thì chỉ có 2 cách (1 + 1 hoặc 2).
-
Làm theo các cách khác =lad_step (bước-3) + cầu thang_cấp (bước-2) + cầu thang_cấp (bước-1).
(phương thức đệ quy)
Ví dụ
#includeusing namespace std; intairs_step (int steps) {if (steps ==0) {return 1; } else if (các bước ==1) {return 1; } else if (bước ==2) {return 2; } else {quay lại cầu thang (bước - 3) + cầu thang_ bước (bước - 2) + cầu thang_bước (bước - 1); }} int main () {int step =5; cout <<"Số cách để đến cầu thang thứ n bằng cách sử dụng bước 1, 2 hoặc 3 là:" < Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
Số cách để đến cầu thang thứ n bằng cách sử dụng bước 1, 2 hoặc 3 là:13