Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法进入递归函数断点VS2013_C#_.net_Recursion_Ienumerable - Fatal编程技术网

C# 无法进入递归函数断点VS2013

C# 无法进入递归函数断点VS2013,c#,.net,recursion,ienumerable,C#,.net,Recursion,Ienumerable,我试图将带有for循环的方法转换为递归,作为编码Kata实践的一部分(试图用递归方法解决问题)。逻辑上没有什么,除了 在递归方法中,断点没有被命中 我试图放置一个记录器(控制台输出)来检查是否调用了该方法,但没有记录任何内容 以下是方法定义: 问题-- 递归方法调用是否(不正确)导致 问题是什么 为什么不调用该方法并返回空 没有失败/错误/警告的结果 其他信息- .Net 4.5,Visual studio 2013 我还尝试在不同的机器上运行此代码(只是为了验证我的VS实例是否有问题)

我试图将带有for循环的方法转换为递归,作为编码Kata实践的一部分(试图用递归方法解决问题)。逻辑上没有什么,除了

  • 在递归方法中,断点没有被命中
  • 我试图放置一个记录器(控制台输出)来检查是否调用了该方法,但没有记录任何内容
以下是方法定义:

问题--

  • 递归方法调用是否(不正确)导致 问题是什么
  • 为什么不调用该方法并返回空 没有失败/错误/警告的结果
其他信息- .Net 4.5,Visual studio 2013


我还尝试在不同的机器上运行此代码(只是为了验证我的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(...);