Tôi vừa học về đệ quy bằng Python và đã hoàn thành nhiệm vụ, một trong số đó là đếm tất cả các phần tử trong danh sách các danh sách lồng nhau tùy ý. Tôi đã tìm kiếm trang web này và các câu trả lời được tìm thấy tất cả dường như sử dụng các cuộc gọi đệ quy. Vì nó đã được dạy rằng bất cứ điều gì có thể được biểu diễn đệ quy có thể được biểu diễn lặp đi lặp lại, và lặp lại được ưa thích trong Python, làm thế nào điều này sẽ được thực hiện mà không đệ quy hoặc mô-đun được nhập trong Python 2.6 (như một bài tập học tập)? (Một danh sách lồng nhau tự sẽ được tính là một yếu tố, như sẽ nội dung của nó.) Ví dụ:Đếm tất cả các phần tử trong danh sách danh sách lồng nhau tùy ý mà không đệ quy
>>> def element_count(p):
... count = 0
... for entry in p:
... count += 1
... if isinstance(entry, list):
... count += element_count(entry)
... return count
>>> print element_count([1, [], 3])
3
>>> print element_count([1, [1, 2, [3, 4]]])
7
>>> print element_count([[[[[[[[1, 2, 3]]]]]]]])
10
Làm thế nào điều này sẽ được viết bằng lặp?
Lặp lại được ưu tiên cho những thứ như vòng lặp đơn giản. Đối với các vấn đề đệ quy vốn như thế này, đệ quy là tốt hơn. – interjay
Đây là một bài tập học tập nhiều hơn là một tuyên bố về nguyên tắc. Và nó có vẻ dễ dàng hơn để thể hiện một giải pháp đệ quy. Tuy nhiên, nếu số lượng các cuộc gọi đệ quy cần thiết chưa được biết trước thì bài tập này có thực tế và cần thiết không? –
Không nên 'element_count ([1, [1, 2, [3, 4]]])' là 5? Tại sao bạn tính các đối tượng danh sách con dưới dạng các phần tử? –