โปรแกรมนี้จัดการลิสต์ตัวเลขที่แทนค่าทศนิยม (แต่ละสมาชิกคือหนึ่งหลัก) เพิ่มค่า 1 ให้กับหลักสุดท้าย พร้อมจัดการการนำ (carry) เมื่อหลักนั้นเป็น 9 ใช้ recursive function
ตัวอย่างโค้ด
def increment_number(digits, idx):
"""เพิ่ม 1 ให้หลัก idx จัดการ carry แบบ recursive"""
if digits[idx] < 9:
digits[idx] += 1
return
digits[idx] = 0
if idx > 0:
increment_number(digits, idx - 1)
else:
# ถ้าทำ carry จนถึงหลักแรกและยัง carry อยู่ ให้เพิ่มหลักใหม่หน้าสุด
digits.insert(0, 1)
# ทดสอบ
digits = [0, 1, 4, 7, 9] # แทนเลข 01479
print("ลิสต์ต้นฉบับ:", digits)
increment_number(digits, len(digits) - 1)
print("หลังเพิ่ม 1:", digits)
ผลลัพธ์
ลิสต์ต้นฉบับ: [0, 1, 4, 7, 9] หลังเพิ่ม 1: [0, 1, 4, 8, 0]
เลข 01479 + 1 = 01480 หลักสุดท้าย 9 กลายเป็น 0 นำ 1 ไปบวกหลักก่อนหน้า 7 กลายเป็น 8