Hướng dẫn what is recursion write a recursive function for finding the factorial of a given number in python? - Đệ quy là gì? Viết một hàm đệ quy để tìm giai thừa của một số nhất định trong python?

Nấp của một số là sản phẩm của tất cả các số nguyên từ 1 đến số đó.

Ví dụ, giai thừa của 6 là 1*2*3*4*5*6 = 720. Nấp không được định nghĩa cho các số âm và giai thừa của số 0 là một, 0! = 1.

Mã nguồn

# Factorial of a number using recursion

def recur_factorial(n):
   if n == 1:
       return n
   else:
       return n*recur_factorial(n-1)

num = 7

# check if the number is negative
if num < 0:
   print("Sorry, factorial does not exist for negative numbers")
elif num == 0:
   print("The factorial of 0 is 1")
else:
   print("The factorial of", num, "is", recur_factorial(num))

Đầu ra

The factorial of 7 is 5040

Lưu ý: Để tìm giai thừa của một số khác, hãy thay đổi giá trị của num. To find the factorial of another number, change the value of num.

Ở đây, số lượng được lưu trữ trong num. Số được chuyển đến hàm

The factorial of 7 is 5040
0 để tính toán giai thừa của số.

Trong hướng dẫn này, bạn sẽ học cách tạo một hàm đệ quy (một hàm tự gọi).

Đệ quy là gì?

Đệ quy là quá trình xác định một cái gì đó theo chính nó.

Một ví dụ thế giới vật lý sẽ là đặt hai gương song song đối diện nhau. Bất kỳ đối tượng ở giữa chúng sẽ được phản ánh đệ quy.


Chức năng đệ quy Python

Trong Python, chúng ta biết rằng một hàm có thể gọi các chức năng khác. Thậm chí có thể cho chức năng gọi chính nó. Các loại cấu trúc này được gọi là các hàm đệ quy.

Hình ảnh sau đây cho thấy hoạt động của một hàm đệ quy gọi là

The factorial of 7 is 5040
1.

Hướng dẫn what is recursion write a recursive function for finding the factorial of a given number in python? - Đệ quy là gì? Viết một hàm đệ quy để tìm giai thừa của một số nhất định trong python?
Chức năng đệ quy trong Python

Sau đây là một ví dụ về hàm đệ quy để tìm giai thừa của một số nguyên.

Factorial của một số là sản phẩm của tất cả các số nguyên từ 1 đến số đó. Ví dụ: giai thừa của 6 (ký hiệu là 6!) Là 1*2*3*4*5*6 = 720.

Ví dụ về hàm đệ quy

def factorial(x):
    """This is a recursive function
    to find the factorial of an integer"""

    if x == 1:
        return 1
    else:
        return (x * factorial(x-1))


num = 3
print("The factorial of", num, "is", factorial(num))

Đầu ra

The factorial of 3 is 6

Trong ví dụ trên,

The factorial of 7 is 5040
2 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. Cuộc gọi đệ quy này có thể được giải thích trong các bước sau.

factorial(3)          # 1st call with 3
3 * factorial(2)      # 2nd call with 2
3 * 2 * factorial(1)  # 3rd call with 1
3 * 2 * 1             # return from 3rd call as number=1
3 * 2                 # return from 2nd call
6                     # return from 1st call

Chú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:

Hướng dẫn what is recursion write a recursive function for finding the factorial of a given number in python? - Đệ quy là gì? Viết một hàm đệ quy để tìm giai thừa của một số nhất định trong python?
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

The factorial of 7 is 5040
3. Hãy nhìn vào một điều kiện như vậy.

def recursor():
    recursor()
recursor()

Đầu ra

Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "<string>", line 2, in a
  File "<string>", line 2, in a
  File "<string>", line 2, in a
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded

Ưu điểm của đệ quy

  1. Các chức năng đệ quy làm cho mã trông sạch sẽ và thanh lịch.
  2. Một nhiệm vụ phức tạp có thể được chia thành các vấn đề phụ đơn giản hơn bằng cách sử dụng đệ quy.
  3. Tạo trình tự dễ dàng hơn với đệ quy hơn là sử dụng một số lần lặp lồng nhau.

Nhược điểm của đệ quy

  1. Đôi khi logic đằng sau đệ quy là khó theo dõi.
  2. Các cuộc gọi đệ quy là tốn kém (không hiệu quả) vì chúng chiếm rất nhiều bộ nhớ và thời gian.
  3. Các chức năng đệ quy rất khó để gỡ lỗi.

Hàm đệ quy trong Python là gì?

Python cũng chấp nhận đệ quy chức năng, có nghĩa là một hàm được xác định có thể tự gọi. Recursion là một khái niệm toán học và lập trình phổ biến. Nó có nghĩa là một chức năng tự gọi. Điều này có lợi ích của ý nghĩa mà bạn có thể lặp qua dữ liệu để đạt được kết quả.a defined function can call itself. Recursion is a common mathematical and programming concept. It means that a function calls itself. This has the benefit of meaning that you can loop through data to reach a result.

Ý bạn là gì khi đệ quy Viết một hàm đệ quy để tìm giai thừa của một số?

Chức năng giai thừa có thể được viết như một cuộc gọi chức năng đệ quy.Hãy nhớ lại rằng Factorial (n) = N × (n - 1) × (n - 2) × × × 2 × 1. Hàm factorial có thể được viết lại đệ quy dưới dạng giai thừa (n) = n × factorial (n - 1).factorial(n) = n × (n – 1) × (n – 2) × … × 2 × 1. The factorial function can be rewritten recursively as factorial(n) = n × factorial(n – 1).

Làm thế nào để bạn viết một giai thừa đệ quy trong Python?

Chương trình Python để tìm giai thừa số bằng cách sử dụng đệ quy..
def recur_factorial (n):.
Nếu n == 1:.
trả lại n ..
trả về n*recur_factorial (n-1).
# Lấy đầu vào từ người dùng ..
num = int (input ("nhập một số:")).
# Kiểm tra số là số âm ..

Đệ quy và ví dụ là gì?

Đệ quy là quá trình xác định một vấn đề (hoặc giải pháp cho một vấn đề) về mặt (phiên bản đơn giản hơn của) chính nó.Ví dụ: chúng ta có thể xác định hoạt động "Tìm đường về nhà" như: Nếu bạn đang ở nhà, hãy ngừng di chuyển.Thực hiện một bước về nhà."Tìm đường về nhà của bạn".the process of defining a problem (or the solution to a problem) in terms of (a simpler version of) itself. For example, we can define the operation "find your way home" as: If you are at home, stop moving. Take one step toward home. "find your way home".