Tôi có một hàm đệ quy trả về tất cả các nút con, cho nút gốc bắt đầu.Đệ quy với các phần tử trả về lợi nhuận trong cây
private IEnumerable<Node> getAllNodesRecursively(Node subnode)
{
foreach (Node node in subnode.Nodes)
getAllNodesRecursively(node);
yield return subnode;
}
Đối với cấu trúc cây sau:
A
|
+--B
|
+--C
| |
| +--D
|
+--E
Khi tôi cố gắng lặp như vậy:
foreach (Node n in getAllNodesRecursively(a))
{
Console.WriteLine(n);
}
hàm trả về chỉ A giá trị.
Tôi muốn sử dụng trả lại lợi nhuận với đệ quy và truy xuất các phần tử trong Đơn đặt hàng trước (A, B, C, D, E trong ví dụ này).
(Nếu tôi đặt lợi nhuận về lợi nhuận trước khi foreach, thì việc cho phép sẽ không bao giờ xảy ra).
Điều này có khả thi không?
Bạn đã thử rằng việc bỏ qua không được gọi nếu bạn đặt lợi nhuận về trước? Tôi đoán nó sẽ được gọi. – okrumnow
Vâng, bạn đã đúng. Lợi nhuận lợi nhuận không bỏ qua phần còn lại của mã. Có vẻ như đó chỉ là một cú pháp cú pháp để cho phép trả về giá trị và vẫn giữ chức năng hoạt động. Lỗi của tôi. –