Tôi đang mã hóa một chương trình, một phần của chương trình là tôi muốn tạo một danh sách với tất cả các chuỗi con từ một chuỗi, sử dụng hàm đệ quy.
Tuy nhiên, khi tôi trả lại danh sách, tôi không nhận được gì. Các trình phát sinh biến có giá trị không có giá trị.
Làm thế nào tôi có thể trả lại danh sách, mà không mất tất cả dữ liệu trong đó?
def main[string]:
substringList = []
substringList = substring[string, substringList]
def substring[string, substringList]:#Recursive function to create all the
length = len[string] #substrings**strong text**
if length == 0:
return substringList
else:
substringList.append[string]
substring[string[1::], substringList]
string = "bananas"
main[string]
AMC
2.5847 Huy hiệu vàng12 Huy hiệu bạc34 Huy hiệu đồng7 gold badges12 silver badges34 bronze badges
Đã hỏi ngày 3 tháng 12 năm 2015 lúc 22:43Dec 3, 2015 at 22:43
3
Bạn có giá trị "Không" vì bạn quên sử dụng lệnh trả về. Ngoài ra, tại sao bạn lại viết một chức năng trình bao bọc riêng để gọi chức năng đệ quy của bạn? Bạn có thể làm điều đó đủ dễ dàng trong chương trình chính. Bạn có thể liệt kê giá trị mặc định của SubringList trong cấu hình gọi với = []. Mã mới:return command. Also, why are you writing a separate wrapper function to call your recursive function? You can do that easily enough in the main program. You can list the default value of substringList in the calling profile with =[]. New code:
def substring[string, substringList=[]]:
# Recursive function to create all the substrings
# of the given string
if len[string] == 0:
return substringList
else:
substringList.append[string]
substring[string[1:], substringList]
return substringList
print substring["bananas"]
Bây giờ, lưu ý rằng bạn cũng chưa viết logic để có được tất cả các chuỗi con: bạn chỉ lấy những cái kết thúc bằng chữ cái cuối cùng. Cách bạn nêu vấn đề, bạn cũng cần những người khác, chẳng hạn như "Nan", "N", v.v. Tôi hy vọng đó là những gì bạn đang tấn công tiếp theo. Lưu ý rằng bạn có thể muốn đệ quy nhiều hơn: Một cuộc gọi thứ hai tìm thấy những gì bạn nhận được từ việc cắt bỏ phần cuối của danh sách này. Là đủ của một gợi ý để bạn đi?
Đã trả lời ngày 4 tháng 12 năm 2015 lúc 0:33Dec 4, 2015 at 0:33
PruneprunePrune
76K14 Huy hiệu vàng57 Huy hiệu bạc76 Huy hiệu đồng14 gold badges57 silver badges76 bronze badges
1
Đây có phải là những gì bạn đang tìm kiếm?
def main[string]:
substringList = []
substringList = substring[string, substringList]
return substringList
def substring[string, substringList]:#Recursive function to create all the
length = len[string] #substrings**strong text**
if length == 0:
return substringList
else:
substringList.append[string]
substring[string[1::], substringList]
return substringList
string = "bananas"
main[string]
>>>['bananas', 'ananas', 'nanas', 'anas', 'nas', 'as', 's']
Đã trả lời ngày 3 tháng 12 năm 2015 lúc 22:48Dec 3, 2015 at 22:48
RietrietRiet
1.2101 Huy hiệu vàng15 Huy hiệu bạc28 Huy hiệu đồng1 gold badge15 silver badges28 bronze badges
2
Câu trả lời của Prune ở trên có một vấn đề; Tuy nhiên, tôi vẫn chưa kiếm đủ điểm để bình luận nên ở đây. Nếu bạn chạy kết quả sau đây từ cuộc gọi thứ hai sẽ bao gồm kết quả của cuộc gọi đầu tiên được nối với cuộc gọi đầu tiên. I E.
def substring[string, substringList=[]]:
# Recursive function to create all the substrings
# of the given string
if len[string] == 0:
return substringList
else:
substringList.append[string]
substring[string[1:], substringList]
return substringList
print [substring["bananas"]]
print [substring["two"]]
Kết quả trong :
. 'như', 's', 'hai', 'wo', 'o']]]
Đã trả lời ngày 11 tháng 4 năm 2020 lúc 0:09Apr 11, 2020 at 0:09
Tôi nghĩ dưới đây là một giải pháp đơn giản hơn cho vấn đề của bạn và cũng khắc phục vấn đề được chỉ ra bởi Gordonc.
def substring[stringList]:
# Recursive function to create all the substrings of the given string
last_str = stringList[-1]
if len[last_str] == 1:
return stringList
else:
return substring[stringList + [last_str[1:]]]
print[substring[["bananas"]]]
print[substring[["two"]]]
print[substring[["what"]]]
Đầu ra là
['bananas', 'ananas', 'nanas', 'anas', 'nas', 'as', 's']
['two', 'wo', 'o']
['what', 'hat', 'at', 't']
Đã trả lời ngày 12 tháng 12 năm 2021 lúc 6:48Dec 12, 2021 at 6:48