Trong bài viết này, chúng ta sẽ tìm hiểu về giải pháp cho bài toán dưới đây:
Đề bài − Cho hai số N và K, bài toán của chúng ta là trừ số K từ N cho đến khi số N lớn hơn 0, một khi N trở thành âm hoặc 0 thì chúng ta bắt đầu cộng K vào nó cho đến khi số đó trở thành số N ban đầu.
Ví dụ,
N = 10, K = 4 Kết quả: 10 6 2 -2 2 6 10
Thuật toán
1. Gọi lại hàm liên tục cho đến khi N lớn hơn 0 (mỗi lần gọi hàm trừ K từ N). 2. Khi số trở thành âm hoặc 0, bắt đầu cộng K trong mỗi lần gọi hàm cho đến khi số trở thành số ban đầu. 3. Ở đây chúng ta dùng một hàm đơn cho cả cộng và trừ nhưng để chuyển đổi giữa cộng/trừ, chúng ta dùng biến flag kiểu Boolean.
Bây giờ hãy quan sát triển khai trong Python:
Ví dụ
def PrintNumber(N, Original, K, flag):
# In số
print(N, end=" ")
# Nếu số trở thành âm
if (N <= 0):
if flag == 0:
flag = 1
else:
flag = 0
if (N == Original and (not flag)):
return
# Nếu flag là True
if (flag == True):
PrintNumber(N - K, Original, K, flag)
return
if (not flag):
PrintNumber(N + K, Original, K, flag)
return
N = 10
K = 4
PrintNumber(N, N, K, True)
Kết quả
10 6 2 -2 2 6 10
Ở đây tất cả biến được khai báo trong namespace toàn cục như hình bên dưới:

Kết luận
Trong bài viết này, chúng ta đã tìm hiểu về thuật ngữ in dãy số mà không sử dụng bất kỳ cấu trúc lặp nào trong Python 3.x hoặc các phiên bản trước đó.