Использовать параметр количества или шага будет достаточно;
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++);
}