Hướng dẫn dùng recurse meaning python - use recurse nghĩa là python

Một hàm gọi chính nó được gọi là hàm đệ quy. Kỹ thuật lập trình này gọi là đệ quy.hàm đệ quy. Kỹ thuật lập trình này gọi là đệ quy.

Nội dung chính ShowShow

  • 2. Chương trình xuất dãy số fibonacci sử dụng hàm đệ quy
  • 3. Ưu và nhược điểm của hàm đệ quy
  • 2. Chương trình xuất dãy số fibonacci sử dụng hàm đệ quy
  • 3. Ưu và nhược điểm của hàm đệ quy
  • Dẫn nhập
  • Giới thiệu về đệ quy
  • Minh họa đệ quy bằng cách tính tổng
  • Đệ quy theo phong cách Python
  • Đệ quy và vòng lặp
  • Kết luận
  • Thảo luận

Nội dung chính

  • 2. Chương trình xuất dãy số fibonacci sử dụng hàm đệ quy
  • 3. Ưu và nhược điểm của hàm đệ quy
  • 2. Chương trình xuất dãy số fibonacci sử dụng hàm đệ quy
  • 3. Ưu và nhược điểm của hàm đệ quy
  • Dẫn nhập
  • Giới thiệu về đệ quy
  • Minh họa đệ quy bằng cách tính tổng
  • Đệ quy theo phong cách Python
  • Đệ quy và vòng lặp
  • Kết luận
  • Thảo luận
def recurse():
    ...
    recurse()
    ...

recurse()

Hướng dẫn dùng recurse meaning python - use recurse nghĩa là python

Nội dung chính: Không thể để hàm gọi hàm liên tục, vô hạn được. Để ngăn chặn đệ quy vô hạn, thường sử dụng câu lệnh if. Tức là, mọi hàm đệ quy phải có một điều kiện dừng đệ quy, tránh hàm gọi hàm vô hạn.

Lưu ý: Không thể để hàm gọi hàm liên tục, vô hạn được. Để ngăn chặn đệ quy vô hạn, thường sử dụng câu lệnh if. Tức là, mọi hàm đệ quy phải có một điều kiện dừng đệ quy, tránh hàm gọi hàm vô hạn.

Traceback (most recent call last):
  File "c:\python-examples\sumPython.py", line 3, in 
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded
3. Ví dụ:

def recursor():
    recursor()
recursor()
Trình thông dịch Python giới hạn độ sâu của đệ quy (depths of recursion) để giúp tránh đệ quy vô hạn, dẫn đến tràn ngăn xếp (stack). Theo mặc định, độ sâu tối đa của đệ quy là 1000. Nếu vượt qua giới hạn sẽ dẫn đến lỗi
Traceback (most recent call last):
  File "c:\python-examples\sumPython.py", line 3, in 
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded
3. Ví dụ:
Traceback (most recent call last):
  File "c:\python-examples\sumPython.py", line 3, in 
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded

Kết quả

Chương trình Python tính giai thừa minh họa hàm đệ quy

Tính giai thừa của n: S(n) = n! = 1*2*…*(n-1)*n

#Factorial of n = 1*2*3*...*n
def factorial(n):
    if (n > 1):
        return n * factorial(n - 1)
    else:
        return 1

n = int(input("Enter a non-negative number: "))
while(n<=0):
    n = int(input("Enter a non-negative number: "))
result = factorial(n)
print("Factorial of", n, "=", result)
Trình thông dịch Python giới hạn độ sâu của đệ quy (depths of recursion) để giúp tránh đệ quy vô hạn, dẫn đến tràn ngăn xếp (stack). Theo mặc định, độ sâu tối đa của đệ quy là 1000. Nếu vượt qua giới hạn sẽ dẫn đến lỗi
Traceback (most recent call last):
  File "c:\python-examples\sumPython.py", line 3, in 
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded
3. Ví dụ:
Enter a non-negative number: 4
Factorial of 4 = 24

Kết quả

Traceback (most recent call last):
  File "c:\python-examples\sumPython.py", line 3, in 
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded
4 trên hoạt động như sau:

def factorial(n):
    if (n > 1):
        return n * factorial(n - 1)
    else:
        return 1

Chương trình Python tính giai thừa minh họa hàm đệ quynhập n = 4, gọi hàm result = factorial(n); tức là result = 4 * factorial(3). Hàm factorial(3) = 3 * factorial(2). Hàm factorial(2) = 2 * factorial(1). Mà khi n = 1 (không thỏa điều kiên if (n > 1)) thì return 1 tức là factorial(1) = 1.

Tính giai thừa của n: S(n) = n! = 1*2*…*(n-1)*nresult = factorial(n) = 4*3*2*1 = 24.

2. Chương trình xuất dãy số fibonacci sử dụng hàm đệ quy

Ta thấy S(n) = S(n-1)*n. Vậy thay vì tính S(n) ta sẽ đi tính S(n-1). Tương tự tính S(n-2), …, S(2), S(1), S(0) = 1.f(n) = f(n-1) + f(n-2) với f(0) = 0, f(1) = 1.

Hàm đệ quy

Traceback (most recent call last):
  File "c:\python-examples\sumPython.py", line 3, in 
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded
4 trên hoạt động như sau:

def fibonacci(x):
    if((x==1) or (x==0)):
        return x
    else:
        return fibonacci(x-1) + fibonacci(x-2)

i=0
x = int(input("Enter the number of terms of series : "))
while(x<=1):
    x = int(input("Enter the number of terms of series : "))
print("Fibonacci Series : ")
while i < x:
    print(fibonacci(i), end=' ')
    i = i + 1
Trình thông dịch Python giới hạn độ sâu của đệ quy (depths of recursion) để giúp tránh đệ quy vô hạn, dẫn đến tràn ngăn xếp (stack). Theo mặc định, độ sâu tối đa của đệ quy là 1000. Nếu vượt qua giới hạn sẽ dẫn đến lỗi
Traceback (most recent call last):
  File "c:\python-examples\sumPython.py", line 3, in 
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded
3. Ví dụ:
Enter the number of terms of series : 5
Fibonacci Series : 
0 1 1 2 3

3. Ưu và nhược điểm của hàm đệ quy

Kết quả

Chương trình Python tính giai thừa minh họa hàm đệ quy

Tính giai thừa của n: S(n) = n! = 1*2*…*(n-1)*n

Ta thấy S(n) = S(n-1)*n. Vậy thay vì tính S(n) ta sẽ đi tính S(n-1). Tương tự tính S(n-2), …, S(2), S(1), S(0) = 1.

Hàm đệ quy

Traceback (most recent call last):
  File "c:\python-examples\sumPython.py", line 3, in 
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded
4 trên hoạt động như sau:

Khi nhập n = 4, gọi hàm result = factorial(n); tức là result = 4 * factorial(3). Hàm factorial(3) = 3 * factorial(2). Hàm factorial(2) = 2 * factorial(1). Mà khi n = 1 (không thỏa điều kiên if (n > 1)) thì return 1 tức là factorial(1) = 1.

Do đó, result = factorial(n) = 4*3*2*1 = 24.

  • Dãy Fibonacci là dãy vô hạn các số tự nhiên bắt đầu bằng hai phần tử 0 và 1. Các phần tử sau đó được thiết lập theo quy tắc mỗi phần tử luôn bằng tổng hai phần tử trước nó. Công thức truy hồi của dãy fibonacci có dạng: f(n) = f(n-1) + f(n-2) với f(0) = 0, f(1) = 1.
  • Khi tính f(n) với n > 1 phải dựa vào 2 số fibonacci trước đó. Bài toán này có thể dùng hàm đệ quy như sau:
  • Ưu điểm:
  • – Giúp code ngắn hơn và rõ ràng hơn.
  • – Một nhiệm vụ phức tạp có thể được chia thành các bài toán con đơn giản hơn bằng cách sử dụng đệ quy.

Một hàm gọi chính nó được gọi là hàm đệ quy. Kỹ thuật lập trình này gọi là đệ quy.hàm đệ quy. Kỹ thuật lập trình này gọi là đệ quy.

Nội dung chính

  • 2. Chương trình xuất dãy số fibonacci sử dụng hàm đệ quy
  • 3. Ưu và nhược điểm của hàm đệ quy
  • Dẫn nhập
  • Giới thiệu về đệ quy
  • Minh họa đệ quy bằng cách tính tổng
  • Đệ quy theo phong cách Python
  • Đệ quy và vòng lặp
  • Kết luận
  • Thảo luận
def recurse():
    ...
    recurse()
    ...

recurse()

Nội dung chính: Không thể để hàm gọi hàm liên tục, vô hạn được. Để ngăn chặn đệ quy vô hạn, thường sử dụng câu lệnh if. Tức là, mọi hàm đệ quy phải có một điều kiện dừng đệ quy, tránh hàm gọi hàm vô hạn.

Lưu ý: Không thể để hàm gọi hàm liên tục, vô hạn được. Để ngăn chặn đệ quy vô hạn, thường sử dụng câu lệnh if. Tức là, mọi hàm đệ quy phải có một điều kiện dừng đệ quy, tránh hàm gọi hàm vô hạn.

Traceback (most recent call last):
  File "c:\python-examples\sumPython.py", line 3, in 
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded
3. Ví dụ:

def recursor():
    recursor()
recursor()
Trình thông dịch Python giới hạn độ sâu của đệ quy (depths of recursion) để giúp tránh đệ quy vô hạn, dẫn đến tràn ngăn xếp (stack). Theo mặc định, độ sâu tối đa của đệ quy là 1000. Nếu vượt qua giới hạn sẽ dẫn đến lỗi
Traceback (most recent call last):
  File "c:\python-examples\sumPython.py", line 3, in 
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded
3. Ví dụ:
Traceback (most recent call last):
  File "c:\python-examples\sumPython.py", line 3, in 
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded

Kết quả

Chương trình Python tính giai thừa minh họa hàm đệ quy

Tính giai thừa của n: S(n) = n! = 1*2*…*(n-1)*n

#Factorial of n = 1*2*3*...*n
def factorial(n):
    if (n > 1):
        return n * factorial(n - 1)
    else:
        return 1

n = int(input("Enter a non-negative number: "))
while(n<=0):
    n = int(input("Enter a non-negative number: "))
result = factorial(n)
print("Factorial of", n, "=", result)
Trình thông dịch Python giới hạn độ sâu của đệ quy (depths of recursion) để giúp tránh đệ quy vô hạn, dẫn đến tràn ngăn xếp (stack). Theo mặc định, độ sâu tối đa của đệ quy là 1000. Nếu vượt qua giới hạn sẽ dẫn đến lỗi
Traceback (most recent call last):
  File "c:\python-examples\sumPython.py", line 3, in 
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded
3. Ví dụ:
Enter a non-negative number: 4
Factorial of 4 = 24

Kết quả

Traceback (most recent call last):
  File "c:\python-examples\sumPython.py", line 3, in 
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded
4 trên hoạt động như sau:

def factorial(n):
    if (n > 1):
        return n * factorial(n - 1)
    else:
        return 1

Chương trình Python tính giai thừa minh họa hàm đệ quynhập n = 4, gọi hàm result = factorial(n); tức là result = 4 * factorial(3). Hàm factorial(3) = 3 * factorial(2). Hàm factorial(2) = 2 * factorial(1). Mà khi n = 1 (không thỏa điều kiên if (n > 1)) thì return 1 tức là factorial(1) = 1.

Tính giai thừa của n: S(n) = n! = 1*2*…*(n-1)*nresult = factorial(n) = 4*3*2*1 = 24.

2. Chương trình xuất dãy số fibonacci sử dụng hàm đệ quy

Ta thấy S(n) = S(n-1)*n. Vậy thay vì tính S(n) ta sẽ đi tính S(n-1). Tương tự tính S(n-2), …, S(2), S(1), S(0) = 1.f(n) = f(n-1) + f(n-2) với f(0) = 0, f(1) = 1.

Hàm đệ quy

Traceback (most recent call last):
  File "c:\python-examples\sumPython.py", line 3, in 
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded
4 trên hoạt động như sau:

def fibonacci(x):
    if((x==1) or (x==0)):
        return x
    else:
        return fibonacci(x-1) + fibonacci(x-2)

i=0
x = int(input("Enter the number of terms of series : "))
while(x<=1):
    x = int(input("Enter the number of terms of series : "))
print("Fibonacci Series : ")
while i < x:
    print(fibonacci(i), end=' ')
    i = i + 1
Kết quả
Enter the number of terms of series : 5
Fibonacci Series : 
0 1 1 2 3

3. Ưu và nhược điểm của hàm đệ quy

Ưu điểm:

– Giúp code ngắn hơn và rõ ràng hơn.

– Một nhiệm vụ phức tạp có thể được chia thành các bài toán con đơn giản hơn bằng cách sử dụng đệ quy.

Nhược điểm:

– Việc gọi hàm liên tục sẽ làm khởi tạo các biến cục bộ trong hàm một cách liên tục và gây tốn bộ nhớ.

– Quá trình xử lý tốn nhiều thời gian hơn.

– Khó debug để tìm ra lỗi.

  • Sửa (update) dữ liệu và câu lệnh drop trong MySQL với Python
  • Khai báo và khởi tạo mảng 2 chiều (two dimensional array) trong Java
  • Giới thiệu môn học Cấu trúc dữ liệu và giải thuật
  • Kiểu dữ liệu enum trong Java
  • Hàm khởi tạo (constructor) và hàm hủy (destructor) của lớp trong OOP

Dẫn nhập

Trong bài trước, Kteam đã giới thiệu đến bạn KIỂU DỮ LIỆU FUNCTION TRONG PYTHON – FUNCTIONAL TOOLS.

Và ở bài này Kteam sẽ lại tìm hiểu với các KIỂU DỮ LIỆU FUNCTION – ĐỆ QUY trong Python.KIỂU DỮ LIỆU FUNCTION – ĐỆ QUY trong Python.


Nội dung

Để đọc hiểu bài này tốt nhất bạn cần:

  • Cài đặt sẵn MÔI TRƯỜNG PHÁT TRIỂN CỦA PYTHON.
  • Xem qua bài CÁCH CHẠY CHƯƠNG TRÌNH PYTHON.
  • Nắm CÁCH GHI CHÚ và BIẾN TRONG PYTHON.
  • CÁC KIỂU DỮ LIỆU ĐƯỢC GIỚI THIỆU TRONG PYTHON
  • CÂU ĐIỀU KIỆN IF TRONG PYTHON

Bạn và Kteam sẽ cùng tìm hiểu những nội dung sau đây

  • Giới thiệu về đệ quy
  • Minh họa đệ quy  bằng cách tính tổng
  • Đệ quy theo phong cách Python
  • Đệ quy và vòng lặp

Giới thiệu về đệ quy

Đệ quy là một mảng kiến thức nâng cao, ở Python thì nó không thường xuyên được dùng đến, do cách xử lí của Python có thể sử dụng những cấu  trúc vòng lặp đơn giản mà không cần dùng tới đệ quy. Nhưng dù sao thì đây cũng là  một kĩ thuật khá hữu dụng mà bạn đọc nên biết. Nó cũng chỉ đơn giản là việc chính nó gọi nó. là một mảng kiến thức nâng cao, ở Python thì nó không thường xuyên được dùng đến, do cách xử lí của Python có thể sử dụng những cấu  trúc vòng lặp đơn giản mà không cần dùng tới đệ quy. Nhưng dù sao thì đây cũng là  một kĩ thuật khá hữu dụng mà bạn đọc nên biết. Nó cũng chỉ đơn giản là việc chính nó gọi nó.

Lấy một ví dụ cụ thể: Giả sử ta có một list gồm n phần tử, nhiệm vụ của chúng ta là lấy toàn bộ các phần tử của list đó. một ví dụ cụ thể: Giả sử ta có một list gồm n phần tử, nhiệm vụ của chúng ta là lấy toàn bộ các phần tử của list đó.

Để giải bài toán này, ta có thể sử dụng một hàm put: giúp lấy ra một phần tử trong list, đồng thời kiếm tra xem list có rỗng hay không. Nếu list đó vẫn còn phần tử, thì ta lại gọi hàm put thêm một lần nữa (để tiếp tục lấy và kiểm tra). Làm như thế cho đến khi list đó rỗng.

Bản thân việc gọi một hàm trong chinh nó được gọi là đệ quy. Trong trường hợp trên, đệ quy là việc khi ta đang chạy hàm put mà lại gọi hàm đó tiếp (trường hợp list có nhiều phần tử).


Minh họa đệ quy bằng cách tính tổng

Ta sẽ tính tổng các phần tử của một list (hoặc một sequence nào đó) bằng cách dùng đệ quy (Ví dụ này chỉ là minh họa, thực tế khi làm bạn nên sử dụng hàm sum)list (hoặc một sequence nào đó) bằng cách dùng đệ quy (Ví dụ này chỉ là minh họa, thực tế khi làm bạn nên sử dụng hàm sum)

def recursor():
    recursor()
recursor()
6

Ở ví dụ trên, ta liên tục gọi lại hàmcal_sum với argument là phần còn lại của List tính từ index 1. Ở mỗi lần gọi hàm, ta để lại giá trị index 0 ở List để khi trong List không còn phần tử nào ta sẽ trả về số 0 để kết thúc đệ quy.cal_sum với argument là phần còn lại của List tính từ index 1. Ở mỗi lần gọi hàm, ta để lại giá trị index 0 List để khi trong List không còn phần tử nào ta sẽ trả về số 0 để kết thúc đệ quy.

Nếu bạn thấy vẫn còn chưa hiểu rõ thì cũng đừng lo lắng, ai cũng đều cảm thấy khó hiểu và điều này thường xuyên xảy ra với những bạn mới học. Những lúc như thế này, bạn nên để thêm một cái hàm printđể xem cụ thể là chuyện gì xảy raprintđể xem cụ thể là chuyện gì xảy ra

def recursor():
    recursor()
recursor()
7

Nếu bạn vẫn còn khó hiểu hãy vẽ ra giấy. Đây là cách mà mình đã làm


Đệ quy theo phong cách Python

Bạn còn nhớ cú pháp if/else trong lambdakhông? Nó còn có tên khác là ternary expression. Bạn có thể áp dụng để sử dụng nó để đệ quy:if/else trong lambdakhông? Nó còn có tên khác là ternary expression. Bạn có thể áp dụng để sử dụng nó để đệ quy:

def recursor():
    recursor()
recursor()
8

Giả sử một list có n phần tử thì với đệ quy như trên cần phải có n + 1 lần return, ta có thể giảm bớt xuống còn n lần return bằng cách:n phần tử thì với đệ quy như trên cần phải có n + 1 lần return, ta có thể giảm bớt xuống còn n lần return bằng cách:

def recursor():
    recursor()
recursor()
9

Lưu ý: cách này không sử dụng được trong trường hợp container rỗng cách này không sử dụng được trong trường hợp container rỗng

Hoặc ta có thể sử dụng packing argument:packing argument:

Traceback (most recent call last):
  File "c:\python-examples\sumPython.py", line 3, in 
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded
0

Lưu ý: cách này cũng không sử dụng được khi container là rỗng. Tuy nhiên điểm lợi của nó cũng như cách vừa nãy là ta có thể cộng không chỉ số mà là chuỗi, hoặc listcách này cũng không sử dụng được khi container là rỗng. Tuy nhiên điểm lợi của nó cũng như cách vừa nãy là ta có thể cộng không chỉ số mà là chuỗi, hoặc list

Traceback (most recent call last):
  File "c:\python-examples\sumPython.py", line 3, in 
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded
1

Đệ quy cũng có thể chuyển hướng. Hãy xem ví dụ sau. Một hàm gọi một hàm khác, sau đó lại gọi lại hàm đã gọi nó.cũng có thể chuyển hướng. Hãy xem ví dụ sau. Một hàm gọi một hàm khác, sau đó lại gọi lại hàm đã gọi nó.

Traceback (most recent call last):
  File "c:\python-examples\sumPython.py", line 3, in 
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  File "c:\python-examples\sumPython.py", line 2, in recursor
    recursor()
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded
2

Đệ quy và vòng lặp

Ở những ví dụ trước, nếu phải chọn vòng lặp hay là đệ quy để xử lí thì Kteam khuyên bạn đọc nên chọn vòng lặp. Python chú trọng việc làm đơn giản hóa mọi việc như là vòng lặp vì nó theo một cách bình thường đơn giản. Vòng lặp cũng không yêu cầu bạn phải tạo ra một hàm mới có thể sử dụng được. Và thêm nữa, đệ quy còn thua vòng lặp ở mặt hiệu quả về bộ nhớ và thời gian thực hiện.


Kết luận

Qua bài viết này, bạn đã biết thêm về đệ quy. Ngoài ra, bạn cũng đã nắm được kha khá các kiến thức cơ bản của Python thông qua khóa LẬP TRÌNH PYTHON CƠ BẢN. Hy vọng khóa học sẽ là nền tảng tốt để bạn có thể tiếp tục tự nghiên cứu hoặc tiến tới các khóa học Python khác.

Cảm ơn bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quyên “Luyện tập – Thử thách – Không ngại khó”.Luyện tập – Thử thách – Không ngại khó”.


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.