2015-03-16 15 views
5

Mã tôi đã có là dành cho bot nhận biểu thức toán học và tính toán nó. Ngay bây giờ tôi có nó làm nhân, chia, trừ và thêm. Vấn đề là tôi muốn xây dựng hỗ trợ cho các dấu ngoặc đơn và dấu ngoặc đơn bên trong dấu ngoặc đơn. Để điều đó xảy ra, tôi cần chạy mã mà tôi đã viết cho các biểu thức mà không có dấu ngoặc đơn cho biểu thức bên trong dấu ngoặc đơn trước. Tôi sẽ kiểm tra "(" và thêm biểu thức bên trong nó vào danh sách cho đến khi nó đạt đến một số ")" trừ khi nó đạt đến một số khác "(" trước tiên, trong trường hợp này tôi sẽ tạo danh sách bên trong danh sách. Tôi sẽ trừ, nhân và chia và sau đó các con số còn lại tôi chỉ cần cộng lại với nhau.python - gọi hàm từ bên trong chính nó

Vì vậy, có thể gọi định nghĩa/chức năng từ bên trong chính nó?

Trả lời

8

Có, đây là một kỹ thuật lập trình cơ bản được gọi là recursion và thường được sử dụng chính xác trong các trường hợp phân tích cú pháp bạn mô tả.

Chỉ cần chắc chắn rằng bạn có trường hợp cơ sở, do đó đệ quy kết thúc khi bạn đến lớp dưới cùng và bạn không tự kết thúc cuộc gọi vô hạn.

(Cũng lưu ý những quả trứng Phục sinh khi bạn Google đệ quy: "Ý của bạn là đệ quy?")

+0

một số ví dụ http://stackoverflow.com/questions/479343/how-can-i-build-a-recursive-function-in -python –

1

Vâng, như @Daniel Roseman cho biết đây là một kỹ thuật lập trình cơ bản được gọi là đệ quy.

im đem lại cho bạn một ví dụ mẫu của nó trong python

def recur_factorial(n): 
    """Function to return the factorial of a number using recursion""" 
    if n == 1: 
     return n 
    else: 
     return n*recur_factorial(n-1) 
Các vấn đề liên quan