Hướng dẫn alternative to recursion python - thay thế cho python đệ quy
Tôi đang bắt đầu học Python. Ngay bây giờ tôi đang tạo CLI cho phép tạo, xem hoặc xóa các liên hệ được lưu trữ trong SQLite 3 dB. Vấn đề là mỗi khi tôi hoàn thành một tác vụ, tôi gọi lại chức năng chính để người dùng có thể làm những việc khác. Mã trông như thế này: Show
Tôi khá chắc chắn rằng các cuộc gọi liên tiếp của một hàm làm giảm hiệu suất của nó và tôi nghĩ rằng có giới hạn bao nhiêu lần bạn có thể gọi một hàm đệ quy, vậy tôi nên gọi lại phương thức chính như thế nào?
hỏi ngày 31 tháng 3 năm 2021 lúc 18:25Mar 31, 2021 at 18:25
2 Bạn đúng về các cuộc gọi đệ quy. Chúng có thể tốt, nhưng lặp lại thường tốt hơn đệ quy. Có rất nhiều điều bạn có thể làm để thực hiện chương trình vô hạn, nhưng cách dễ nhất, đối với CLI, là đặt tất cả chức năng của bạn vào một vòng lặp. Đây là loại xấu xí, nhưng điều đó sẽ hoạt động mà không cần bạn phải gọi Main () mọi lúc.
Như đã nói, bạn vẫn phải gọi Main () Đã trả lời ngày 31 tháng 3 năm 2021 lúc 18:49Mar 31, 2021 at 18:49
VollfeiwvollfeiwVollfeiw 1751 Huy hiệu bạc9 Huy hiệu đồng1 silver badge9 bronze badges 3 Bạn có thể sử dụng các thư viện đối số như getopt hoặc argparse Mục tiêu chính ở đây là quản lý các tùy chọn bên trong một vòng lặp và gọi tất cả cùng một lúc. Bán tại: $ python3 ./script.py -123 Đã trả lời ngày 31 tháng 3 năm 2021 lúc 19:32Mar 31, 2021 at 19:32
Trong Python không có thứ gọi là "Hàm chính" hoặc "phương pháp chính". Nếu bạn muốn, bạn có thể đọc về các nhà xây dựng, hoạt động cuộc gọi, v.v. Vì vậy, nếu tôi hiểu chính xác - bạn muốn gọi lại phương thức "chính" cuộc gọi."main function" or "main method". If you want, you can read about constructors, call operations and etc. So, if I understood correctly - you want to recursive call "main" method. Bạn có thể đếm các sự xuất hiện trong phương pháp này như thế này: 3 và sau đó, nếu bạn muốn gọi đó là đệ quy, hãy tạo vòng lặp hoặc chỉ tổng hợp "đếm":
Đã trả lời ngày 31 tháng 3 năm 2021 lúc 18:44Mar 31, 2021 at 18:44
r1v3nr1v3nr1v3n 4053 Huy hiệu bạc9 Huy hiệu Đồng3 silver badges9 bronze badges 1 Bạn 4 không trả lại bất cứ thứ gì bạn có thể viết theo cách nhỏ gọn hơn như sau:Nội phân chính
Trong Python, một chức năng cũng có thể tự gọi! Một chức năng tự gọi được cho là đệ quy và kỹ thuật sử dụng một hàm đệ quy được gọi là đệ quy. Nó có vẻ kỳ dị cho một chức năng để tự gọi, nhưng nhiều loại vấn đề lập trình được thể hiện tốt nhất một cách đệ quy.
Bạn 4 không trả lại bất cứ thứ gì bạn có thể viết theo cách nhỏ gọn hơn như sau:
Nội phân chínhbefore calling it. Đệ quy là gì? Nội phân chính
Trong Python, một chức năng cũng có thể tự gọi! Một chức năng tự gọi được cho là đệ quy và kỹ thuật sử dụng một hàm đệ quy được gọi là đệ quy. Nó có vẻ kỳ dị cho một chức năng để tự gọi, nhưng nhiều loại vấn đề lập trình được thể hiện tốt nhất một cách đệ quy. Bạn 4 không trả lại bất cứ thứ gì bạn có thể viết theo cách nhỏ gọn hơn như sau:
Nội phân chính Đệ quy là gì?Chức năng đệ quy Python Ví dụ về hàm đệ quy Chức năng đệ quy PythonVí dụ về hàm đệ quy Ưu điểm của đệ quy Nhược điểm của đệ quyĐầu ra Ngay cả khi tôi không được đề xuất trong trường hợp cụ thể, bạn có thể đạt được kết quả tương tự mà không cần sử dụng 5 chạy một cái gì đó như thế này:Ví dụ về hàm đệ quy
Ưu điểm của đệ quy The factorial of 3 is 6 Nhược điểm của đệ quy Đầu ra Ngay cả khi tôi không được đề xuất trong trường hợp cụ thể, bạn có thể đạt được kết quả tương tự mà không cần sử dụng 5 chạy một cái gì đó như thế này: 0Chúng ta hãy xem một hình ảnh hiển thị một quá trình từng bước về những gì đang diễn ra: Làm việc của một chức năng giai thừa đệ quyĐệ quy của chúng tôi kết thúc khi số lượng giảm xuống 1. cái này được gọi là điều kiện cơ sở. Mỗi chức năng đệ quy phải có một điều kiện cơ sở dừng đệ quy hoặc nếu không thì hàm tự gọi chính nó. Thông dịch viên Python giới hạn độ sâu của đệ quy để giúp tránh các đệ quy vô hạn, dẫn đến tràn chồng. Theo mặc định, độ sâu tối đa của đệ quy là 1000. Nếu giới hạn được vượt qua, nó sẽ dẫn đến 1. Hãy nhìn vào một điều kiện như vậy. 1Đầu ra 2Ưu điểm của đệ quy
Nhược điểm của đệ quy
Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn và một cộng đồng chuyên gia Pythonistas. Mở khóa bài học này Bài học này chỉ dành cho các thành viên. Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn và một cộng đồng chuyên gia Pythonistas.Join us and get access to thousands of tutorials and a community of expert Pythonistas. Mở khóa bài học này Bài học này chỉ dành cho các thành viên. Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn và một cộng đồng chuyên gia Pythonistas. Looks like there’s an issue with video playback 🙁 This might be due to a temporary outage or because of a configuration issue with your browser. Please see our video player troubleshooting guide to resolve the issue.
Nhận xét & Thảo luận Using Recursion and a Python Class. Your first approach to generating the Fibonacci sequence will use a Python class and recursion. An advantage of using a class over the memoized recursive function you saw earlier is that a class keeps state and behavior together within the same object. 00:00 Sử dụng đệ quy và lớp Python. Cách tiếp cận đầu tiên của bạn để tạo chuỗi Fibonacci sẽ sử dụng lớp Python và đệ quy. Một lợi thế của việc sử dụng một lớp trên hàm đệ quy ghi nhớ mà bạn đã thấy trước đó là một lớp giữ trạng thái và hành vi cùng nhau trong cùng một đối tượng. This is known as encapsulation. In the function example, 2 is a completely separate object, so you don’t have control over it. On-screen, you can see the code that implements a class-based solution. 00:20 Điều này được gọi là đóng gói. Trong ví dụ chức năng, 3 class. Line 4 defines the class initializer, 4. It’s a special method that you can use to initialize your class instances. 00:36 Dòng 3 Xác định lớp 5) methods. Line 5 creates the 6 instance attribute, which means that whenever you create a 3 object, there will be a cache for it. 00:48 Các phương pháp đặc biệt đôi khi được gọi là các phương pháp Dunder, viết tắt cho các phương pháp kép ( 8. This method turns the instances of Fibonacci into callable objects. Lines 9 to 12 validate the value of
9 by using a conditional statement. 01:02 Thuộc tính này ban đầu chứa các số đầu tiên trong chuỗi Fibonacci. Dòng 7 xác định một phương pháp đặc biệt khác, 9 is not a positive integer, then the method raises a 1. 01:22 Nếu 9 is already in the cache, then line 16 returns it. 01:38 Dòng 15 Xác định một câu lệnh có điều kiện để kiểm tra các số Fibonacci đã được tính toán và có mặt trong bộ đệm. Nếu chỉ mục số 01:53 Nếu không, dòng 19 tính toán số và dòng 20 nối nó vào bộ đệm để bạn không phải tính toán lại. Cuối cùng, dòng 22 trả về số Fibonacci được yêu cầu. To try this code, go ahead and save it into 3. Then run this code in your interactive shell in the same directory. Here you create and then call an instance of that 3 class named 5. 02:11 Để thử mã này, hãy tiếp tục và lưu nó vào 6 as an argument and returns 6, which is the sixth Fibonacci number because you’re using zero-based indices.
02:32 Cuộc gọi đầu tiên sử dụng 6 attribute holds the already-computed numbers from call to call. 02:48 Việc triển khai thuật toán trình tự Fibonacci này khá hiệu quả. Khi bạn có một thể hiện của lớp, thuộc tính 03:00 Trong phần tiếp theo của khóa học, bạn sẽ đi sâu hơn để hình dung những gì xảy ra khi gọi thuật toán đệ quy này để hiểu rõ hơn về đệ quy và cách ghi nhớ làm cho thuật toán hiệu quả hơn.Một lớp học có thể được đệ quy?. Khi một đối tượng của một số lớp có giá trị thuộc tính của cùng một lớp, đó là một đối tượng đệ quy.Làm thế nào để bạn gọi một chức năng đệ quy trong Python?tri_recursion() is a function that we have defined to call itself ("recurse"). We use the k variable as the data, which decrements (-1) every time we recurse. The recursion ends when the condition is not greater than 0 (i.e. when it is 0). Trong ví dụ này, tri_Recursion () là một hàm mà chúng tôi đã xác định để tự gọi ("Recurse"). Chúng tôi sử dụng biến K làm dữ liệu, giảm (-1) mỗi khi chúng tôi tái diễn. Đệ quy kết thúc khi điều kiện không lớn hơn 0 (nghĩa là khi nó là 0).Trong ví dụ trên, Factorial () là một hàm đệ quy như nó tự gọi.Khi chúng ta gọi hàm này với số nguyên dương, nó sẽ tự gọi mình bằng cách giảm số.Mỗi hàm nhân số số với giai thừa của số bên dưới nó cho đến khi nó bằng một.factorial() is a recursive function as it calls itself. When we call this function with a positive integer, it will recursively call itself by decreasing the number. Each function multiplies the number with the factorial of the number below it until it is equal to one. Tôi có thể gọi một chức năng bên trong chính nó không?Trong Python, một chức năng cũng có thể tự gọi!Một chức năng tự gọi được cho là đệ quy và kỹ thuật sử dụng một hàm đệ quy được gọi là đệ quy.Nó có vẻ kỳ dị cho một chức năng để tự gọi, nhưng nhiều loại vấn đề lập trình được thể hiện tốt nhất một cách đệ quy.it's also possible for a function to call itself! A function that calls itself is said to be recursive, and the technique of employing a recursive function is called recursion. It may seem peculiar for a function to call itself, but many types of programming problems are best expressed recursively. |