[Buổi 13][Đệ quy][HW] Bài 1: Giai thừa đệ quy


LÀM BÀI

Points: 100
Time limit: 1.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
C++

Giai thừa đệ quy

Bối cảnh

Một hệ thống mô phỏng số cách sắp xếp n công việc nhỏ theo thứ tự sử dụng giá trị n!. Ở Module trước, học viên có thể tính giai thừa bằng vòng lặp; tại B13, mục tiêu là diễn đạt lại đúng định nghĩa toán học dưới dạng recursion: muốn biết n!, ta chỉ cần biết (n-1)!, rồi nhân thêm n. Bài toán cố ý giữ dữ liệu nhỏ để người học tập trung vào hai câu hỏi quan trọng của recursion: base case nằm ở đâu và mỗi lời gọi mới có thật sự tiến gần base case hay không. Đây là bài homework Easy nên thuật toán không phức tạp, nhưng code phải thể hiện rõ cấu trúc CALL → base case → RETURN thay vì dùng vòng lặp thay thế.

Yêu cầu

  1. Viết hàm đệ quy tính n!.
  2. Quy ước 0! = 1.
  3. In kết quả.

Yêu cầu tổ chức code

Bắt buộc dùng recursion cho hàm factorial.

Online Judge chủ yếu chấm output. Giảng viên sẽ quan sát thêm cách tổ chức hàm khi review code để bảo đảm học viên luyện đúng kỹ năng của buổi.

Input

Một số nguyên n.

Output

Một số nguyên là n!.

Ràng buộc

0 ≤ n ≤ 20.

Ví dụ 1

Input

0

Output

1

Giải thích

Với n=5, chuỗi lời gọi là fact(5)→fact(4)→fact(3)→fact(2)→fact(1)→fact(0). Base case fact(0) trả 1. Khi return, các tầng lần lượt tạo 1×1=1, 2×1=2, 3×2=6, 4×6=24, 5×24=120. Vì vậy giá trị cuối cùng được in là 120.

Ví dụ 2

Input

1

Output

1

Giải thích

Input 0 chạm trực tiếp base case 0! = 1. Không có recursive call nào khác, nên hàm trả ngay 1. Đây là test quan trọng vì nếu base case trả 0 thì mọi giai thừa dương cũng sẽ bị nhân với 0 và cho kết quả sai.

Thông tin học tập

  • Module: M04
  • Buổi: B13
  • Loại bài: HOMEWORK
  • Độ khó: Easy
  • Concepts: recursion, factorial, base case, integer types
  • Giới hạn kiến thức: B01-B13
  • Time limit: 1 second(s)
  • Memory limit: 256 MB
  • Point: 100

Comments

There are no comments at the moment.

Zalo