我的程序中有一个递归调用:
Left?.Generate(ref result, ref resultGiven);
此Generate()
函数被调用 6 次时,我想调试程序并停止执行。我该怎么办?
答案 0 :(得分:1)
最简单的方法是使用全局变量。
// somewhere before Generate first call
var counter = 0;
void Generate(ref result, ref resultGiven)
{
if (counter == 6)
return;
counter++;
// the rest of function's body
}
答案 1 :(得分:1)
如果我理解正确,则希望限制递归的深度(即,不要让.
自称多于{{1 }}次。如果您是这种情况,可以尝试StackTrace类:
Generate
答案 2 :(得分:1)
使用count或step参数就足够了;
Left?.Generate(ref result, ref resultGiven); // is same
函数看起来像这样:
void Generate(object ref result, object ref resultGiven, int step = 0)
{
// do stuf
// break for debug
if (step >= 6)
{
return;
}
// or only break when debugger is attached
if (System.Diagnostics.Debugger.IsAttached && step >= 6)
{
return;
}
// recursive
Generate(ref result, ref resultGiven, step++);
}