C# 无法进入递归函数断点VS2013
我试图将带有for循环的方法转换为递归,作为编码Kata实践的一部分(试图用递归方法解决问题)。逻辑上没有什么,除了C# 无法进入递归函数断点VS2013,c#,.net,recursion,ienumerable,C#,.net,Recursion,Ienumerable,我试图将带有for循环的方法转换为递归,作为编码Kata实践的一部分(试图用递归方法解决问题)。逻辑上没有什么,除了 在递归方法中,断点没有被命中 我试图放置一个记录器(控制台输出)来检查是否调用了该方法,但没有记录任何内容 以下是方法定义: 问题-- 递归方法调用是否(不正确)导致 问题是什么 为什么不调用该方法并返回空 没有失败/错误/警告的结果 其他信息- .Net 4.5,Visual studio 2013 我还尝试在不同的机器上运行此代码(只是为了验证我的VS实例是否有问题)
- 在递归方法中,断点没有被命中李>
- 我试图放置一个记录器(控制台输出)来检查是否调用了该方法,但没有记录任何内容李>
- 递归方法调用是否(不正确)导致 问题是什么李>
- 为什么不调用该方法并返回空 没有失败/错误/警告的结果
我还尝试在不同的机器上运行此代码(只是为了验证我的VS实例是否有问题) 返回
IEnumerable
的方法有一个小技巧。你应该列举它们
与其在其内部调用getElementWithLargestDeltaontimelinerc
,不如枚举它并返回其元素或存储结果以供以后使用IEnumerable
s在枚举之前不执行任何操作
foreach (var e in GetElementWithLargestDeltaOnTimelineRec(...))
yield return e;
或
然后使用
innerResult
以某种方式使其被枚举。给定您发布的示例代码,您的方法实际上没有被执行:它返回一个IEnumerable
,您没有对它做任何处理。尝试在Main()
中迭代result
,您将看到一些日志记录。
foreach (var e in GetElementWithLargestDeltaOnTimelineRec(...))
yield return e;
public class Program
{
public static void Main()
{
var a = new[] { 10, 9, 3, 6, 7, 8, 15, 10, 6 };
var val = new StockManager();
var result = val.GetElementWithLargestDeltaOnTimelineRec(a, 0, 0, 0, a[0], 1, a[1], 0);
}
}
foreach (var e in GetElementWithLargestDeltaOnTimelineRec(...))
yield return e;
var innerResult = GetElementWithLargestDeltaOnTimelineRec(...);