Tôi đã viết một hàm đệ quy trong đó sản lượng IEnumerable<int>
IEnumerable đệ quy không hoạt động như mong đợi?
IEnumerable<int> Go(int b )
{
if (b==0) yield return 0;
else
foreach (var element in Go(b-1))
{
yield return element;
}
}
Vì vậy, Nếu tôi viết
foreach (var element in Go(3))
{
Console.WriteLine (element);
}
Nó nên năng suất
0
1
2
3
Nhưng nó không hoạt động như mong đợi. (nó hiển thị 0).
Trong hàm đệ quy bình thường (trả về int - không có Ienumerable) nó hoạt động tốt.
Câu hỏi:
Làm thế nào tôi có thể sửa chữa đoạn code để nó mang lại giá trị mong đợi?
nb. Không có lý do gì để sử dụng đệ quy Ienumerables. Nó chỉ đến tâm trí của tôi sau khi chơi với năng suất đệ quy.
nếu cần đơn giản '0 1 2 3' lý do bạn cần đệ quy? – Grundy
như là một sản lượng sang một bên, đệ quy gây ra rất nhiều bộ nhớ không rõ ràng/cpu chum và như một máy trạng thái mới được xây dựng mỗi khi bạn nhập phương pháp. – spender
@Grundy Vì tôi đã chơi một chút với năng suất đệ quy và không thấy kết quả mong đợi nên tôi muốn đi sâu hơn. –