Hiểu Python đệ quy
Thuật ngữ này có thể được định nghĩa là quá trình xác định một cái gì đó theo chính nó. Nói một cách đơn giản, đó là một quá trình trong đó một chức năng gọi chính nó trực tiếp hoặc gián tiếp. Show Ưu điểm của việc sử dụng đệ quy
Nhược điểm của việc sử dụng đệ quy
cú pháp def func(): <-- | | (recursive call) | func() ---- ví dụ 1. Dãy Fibonacci là dãy số nguyên 0, 1, 1, 2, 3, 5, 8…. Python3
Fibonacci series: 0 1 1 2 3 5 8 13 21 340 Fibonacci series: 0 1 1 2 3 5 8 13 21 341 Fibonacci series: 0 1 1 2 3 5 8 13 21 342 Fibonacci series: 0 1 1 2 3 5 8 13 21 343_______1_______4 Fibonacci series: 0 1 1 2 3 5 8 13 21 345_______1_______6 Fibonacci series: 0 1 1 2 3 5 8 13 21 347
Fibonacci series: 0 1 1 2 3 5 8 13 21 349 Fibonacci series: 0 1 1 2 3 5 8 13 21 344 Fibonacci series: 0 1 1 2 3 5 8 13 21 345_______1_______6 Factorial of number 6 = 7203 Factorial of number 6 = 7204_______1_______3 Factorial of number 6 = 7206 Factorial of number 6 = 7207 Factorial of number 6 = 7208 Factorial of number 6 = 7204 7200 7201
7202_______1_______2 7204
7205 Fibonacci series: 0 1 1 2 3 5 8 13 21 340 7207 Fibonacci series: 0 1 1 2 3 5 8 13 21 342 7209 Fibonacci series: 0 1 1 2 3 5 8 13 21 344
7202_______20_______3 7204 Factorial of number 6 = 7206 Fibonacci series: 0 1 1 2 3 5 8 13 21 349 Fibonacci series: 0 1 1 2 3 5 8 13 21 344
7202_______20_______3 # Program to print the fibonacci series upto n_terms 1Factorial of number 6 = 7206
7202 # Recursive function 0Đầu ra Fibonacci series: 0 1 1 2 3 5 8 13 21 34 ví dụ 2. Giai thừa của 6 được ký hiệu là 6. = 1*2*3*4*5*6 = 720. Python3
Fibonacci series: 0 1 1 2 3 5 8 13 21 340 Fibonacci series: 0 1 1 2 3 5 8 13 21 347 Fibonacci series: 0 1 1 2 3 5 8 13 21 342 Fibonacci series: 0 1 1 2 3 5 8 13 21 342 Fibonacci series: 0 1 1 2 3 5 8 13 21 343 Fibonacci series: 0 1 1 2 3 5 8 13 21 344 Fibonacci series: 0 1 1 2 3 5 8 13 21 345_______1_______6 Fibonacci series: 0 1 1 2 3 5 8 13 21 347
Fibonacci series: 0 1 1 2 3 5 8 13 21 349 Fibonacci series: 0 1 1 2 3 5 8 13 21 344 Fibonacci series: 0 1 1 2 3 5 8 13 21 345_______1_______6 Fibonacci series: 0 1 1 2 3 5 8 13 21 347 recursive_fibonacci(n): 2 recursive_fibonacci(n): 3Factorial of number 6 = 7204 Fibonacci series: 0 1 1 2 3 5 8 13 21 343 Factorial of number 6 = 7206
Fibonacci series: 0 1 1 2 3 5 8 13 21 340 37209 Fibonacci series: 0 1 1 2 3 5 8 13 21 344
7202_______20_______3 9Factorial of number 6 = 7206 Fibonacci series: 0 1 1 2 3 5 8 13 21 3401 recursive_fibonacci(n): 8Fibonacci series: 0 1 1 2 3 5 8 13 21 342 Fibonacci series: 0 1 1 2 3 5 8 13 21 342 7209 Fibonacci series: 0 1 1 2 3 5 8 13 21 344
7202_______20_______3 Fibonacci series: 0 1 1 2 3 5 8 13 21 3410_______13_______6 Fibonacci series: 0 1 1 2 3 5 8 13 21 349 Fibonacci series: 0 1 1 2 3 5 8 13 21 344
7202_______20_______3 Fibonacci series: 0 1 1 2 3 5 8 13 21 3417_______1_______18 Fibonacci series: 0 1 1 2 3 5 8 13 21 3419 Fibonacci series: 0 1 1 2 3 5 8 13 21 3420 Đầu ra Factorial of number 6 = 720 Đệ quy đuôi là gì?Một loại đệ quy duy nhất trong đó thủ tục cuối cùng của hàm là một lệnh gọi đệ quy. Đệ quy có thể được tự động hóa bằng cách thực hiện yêu cầu trong khung ngăn xếp hiện tại và trả về đầu ra thay vì tạo khung ngăn xếp mới. Đệ quy đuôi có thể được trình biên dịch tối ưu hóa, điều này làm cho nó tốt hơn các hàm đệ quy không đuôi. Có thể tối ưu hóa chương trình bằng cách sử dụng hàm đệ quy đuôi thay vì hàm đệ quy không đuôi không? Python3Fibonacci series: 0 1 1 2 3 5 8 13 21 3421 Fibonacci series: 0 1 1 2 3 5 8 13 21 3422
Fibonacci series: 0 1 1 2 3 5 8 13 21 3423
Fibonacci series: 0 1 1 2 3 5 8 13 21 3425
Fibonacci series: 0 1 1 2 3 5 8 13 21 340 Fibonacci series: 0 1 1 2 3 5 8 13 21 3429 Fibonacci series: 0 1 1 2 3 5 8 13 21 342 Fibonacci series: 0 1 1 2 3 5 8 13 21 342 7209 Fibonacci series: 0 1 1 2 3 5 8 13 21 3433 Fibonacci series: 0 1 1 2 3 5 8 13 21 3434 Fibonacci series: 0 1 1 2 3 5 8 13 21 346 Fibonacci series: 0 1 1 2 3 5 8 13 21 343
Fibonacci series: 0 1 1 2 3 5 8 13 21 346 Fibonacci series: 0 1 1 2 3 5 8 13 21 347 recursive_fibonacci(n): 2 Fibonacci series: 0 1 1 2 3 5 8 13 21 3442 Factorial of number 6 = 7204 Fibonacci series: 0 1 1 2 3 5 8 13 21 343 Factorial of number 6 = 7206
Fibonacci series: 0 1 1 2 3 5 8 13 21 3447 7202_______1_______49 07201 Đầu ra 720 Chúng ta có thể viết hàm Recur_facto đã cho dưới dạng hàm đệ quy đuôi. Ý tưởng là sử dụng thêm một đối số và trong đối số thứ hai, chúng tôi điều chỉnh giá trị của giai thừa. Khi n về 0, trả về giá trị cuối cùng của giai thừa của số mong muốn. Nhược điểm của đệ quy trong Python là gì?Mặc dù nó làm cho mã trông gọn gàng hơn, nhưng đôi khi có thể khó theo dõi Chúng có thể đơn giản hơn, nhưng các cuộc gọi đệ quy rất tốn kém. Chúng chiếm nhiều bộ nhớ và thời gian Cuối cùng, không dễ để gỡ lỗi một hàm đệ quy Đệ quy hoạt động như thế nào?Đệ quy thực hiện một số lần gọi hàm lặp lại từ bên trong hàm . Điều kiện đệ quy thực hiện các lệnh gọi hàm lặp lại cho đến khi trường hợp cơ sở được đáp ứng. Trường hợp cơ sở có mặt bên trong hàm và khi điều kiện của trường hợp cơ sở được thỏa mãn, nó sẽ dừng thực thi.
đệ quy cho người giả là gì?Một hàm được gọi là hàm đệ quy nếu nó tự gọi đi gọi lại chính nó . Đệ quy có thể là trực tiếp cũng như gián tiếp. Đệ quy trực tiếp là khi một hàm gọi chính nó. Trong khi đệ quy gián tiếp là khi một hàm gọi một hàm khác và hàm được gọi lần lượt gọi hàm gọi. |