Đối với đệ quy vòng lặp Python
Khi một hàm gọi chính nó, nó được gọi là hàm đệ quy. Trong hướng dẫn này, chúng ta sẽ học cách viết hàm đệ quy Python Show
Đệ quy trong Python là gì?Khi một hàm được định nghĩa theo cách nó gọi chính nó, nó được gọi là hàm đệ quy. Hiện tượng này được gọi là đệ quy. Python hỗ trợ các hàm đệ quy Chúng ta có thực sự cần Hàm đệ quy không?Đệ quy rất giống với một vòng lặp trong đó hàm được gọi trong mỗi lần lặp. Đó là lý do tại sao chúng ta luôn có thể sử dụng các vòng lặp để thay thế cho hàm đệ quy Python Tuy nhiên, một số lập trình viên thích đệ quy hơn vòng lặp. Đó chủ yếu là vấn đề lựa chọn và bạn có thể tự do sử dụng vòng lặp hoặc đệ quy Python cho vòng lặp Ví dụ về hàm đệ quy trong PythonHãy xem xét một vài ví dụ về hàm đệ quy trong Python 1. Giai thừa của một số nguyênGiai thừa của một số nguyên được tính bằng cách nhân các số nguyên từ 1 đến số đó. Ví dụ, giai thừa của 10 sẽ là 1*2*3…. *10 Hãy xem cách chúng ta có thể viết hàm giai thừa bằng vòng lặp for def factorial(n): result = 1 for i in range(1, n + 1): result = result * i return result print(f'Factorial of 10 = {factorial(10)}') print(f'Factorial of 5 = {factorial(5)}') Hãy xem cách chúng ta có thể thay đổi hàm giai thừa() để sử dụng đệ quy def factorial(n): if n == 1: return 1 else: return n * factorial(n - 1) print(f'Factorial of 10 = {factorial(10)}') print(f'Factorial of 5 = {factorial(5)}') Hình ảnh dưới đây cho thấy việc thực thi hàm đệ quy 2. Dãy FibonacciDãy Fibonacci là dãy số mà mỗi số là tổng của hai số liền trước. Ví dụ – 1, 1, 2, 3, 5, 8, 13, 21, v.v. Hãy xem một hàm trả về chuỗi số Fibonacci bằng cách sử dụng các vòng lặp def fibonacci(n): """ Returns Fibonacci Number at nth position using loop""" if n == 0: return 0 if n == 1: return 1 i1 = 0 i2 = 1 num = 1 for x in range(1, n): num = i1 + i2 i1 = i2 i2 = num return num for i in range(10): print(fibonacci(i), end=" ") # Output: 0 1 1 2 3 5 8 13 21 34 Đây là cách triển khai hàm fibonacci() sử dụng đệ quy def fibonacci(n): """ Returns Fibonacci Number at nth position using recursion""" if n == 0: return 0 elif n == 1: return 1 else: return fibonacci(n - 1) + fibonacci(n - 2) for i in range(10): print(fibonacci(i), end=" ") # Output: 0 1 1 2 3 5 8 13 21 34Chuỗi Fibonacci trong Python sử dụng đệ quy Ở đây mã hàm đệ quy nhỏ hơn và dễ hiểu. Vì vậy, sử dụng đệ quy, trong trường hợp này, có ý nghĩa Trường hợp cơ sở trong đệ quy là gì?Trong khi xác định hàm đệ quy, phải có ít nhất một trường hợp cơ sở mà chúng ta biết kết quả. Sau đó, mọi lệnh gọi hàm đệ quy liên tiếp phải đưa nó đến gần trường hợp cơ sở hơn. Điều này là cần thiết để cuối cùng các cuộc gọi đệ quy kết thúc. Nếu không, chức năng sẽ không bao giờ kết thúc và chúng tôi sẽ thoát khỏi lỗi bộ nhớ Bạn có thể kiểm tra hành vi này trong cả hai ví dụ trên. Các đối số gọi hàm đệ quy đang tiến gần hơn đến trường hợp cơ sở Ưu điểm của đệ quy
Nhược điểm của đệ quy
Đệ quy hay Vòng lặp?Đó là vấn đề lựa chọn cá nhân. Tôi luôn thích vòng lặp hơn đệ quy. Tôi chưa thấy ví dụ nào mà chúng ta không thể sử dụng vòng lặp và chỉ phải sử dụng đệ quy Cả vòng lặp và đệ quy đều là những khái niệm lập trình chúng ta sử dụng để giải quyết vấn đề. Cái này có thể phù hợp với một tình huống hơn cái kia, vì vậy biết khi nào nên sử dụng cái nào trong hai cái là rất quan trọng
một vòng lặp là gì?Vòng lặp là một lệnh yêu cầu máy tính thực hiện lặp đi lặp lại một lệnh, thường dựa trên một điều kiện. Chúng tôi có ba loại vòng lặp chính
Vòng lặp
number = 0
while (number < 10):
print(number)
|