Menu
CoddyTech

Hàm đệ quy phần 2

Thuộc phần Logic và luồng chương trình trong hành trình Python của Coddy. Bài học 61 trên 78.

Hàm đệ quy thường có hai phần:

  1. Trường hợp cơ sở: Xác định khi nào đệ quy nên dừng lại.
  2. Bước đệ quy: Gọi chính hàm đó với đầu vào nhỏ hơn.

Ví dụ: tính giai thừa bằng đệ quy (recursion):

def factorial(n):
    if n == 1:  # Trường hợp cơ sở
        return 1
    return n * factorial(n - 1)  # Lời gọi đệ quy

print(factorial(5))  # Đầu ra: 120

Ở đây, hàm (function) liên tục gọi chính nó với n - 1 cho đến khi đạt đến 1, tại đó đệ quy dừng lại.

Ví dụ: đảo ngược một chuỗi:

def recursive_reverse(s):
	if len(s) <= 1:  # Trường hợp cơ sở: chuỗi rỗng hoặc chỉ có một ký tự
		return s
	else:
		return recursive_reverse(s[1:]) + s[0]  # Bước đệ quy

text = "hello"
result = recursive_reverse(text)
print(result)
# Đầu ra: olleh

Trong ví dụ này, hàm recursive_reverse gọi chính nó với phần còn lại của chuỗi (s[1:]) cho đến khi chuỗi rỗng hoặc chỉ còn một ký tự. Mỗi lần gọi thêm ký tự đầu tiên vào kết quả của lần gọi đệ quy, qua đó đảo ngược chuỗi.

challenge icon

Thử thách

Dễ

Viết một hàm đệ quy (recursion) tên là fibonacci, nhận một số nguyên dương n làm đối số và trả về số Fibonacci thứ n. Dãy Fibonacci được định nghĩa như sau:

  • fibonacci(1) = 0
  • fibonacci(2) = 1
  • fibonacci(n) = fibonacci(n-1) + fibonacci(n-2) khi n > 2.

Đầu vào mẫu:

n = 6

Đầu ra mẫu:

5

Tự làm thử

def fibonacci(n):
    # Viết code ở đây
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch Python online