如何将C#中的多层嵌套循环实现为递归函数?
C# 用递归实现多层嵌套循环的组合生成
原代码的作用是生成6个0-3的数字的所有排列组合,每个组合用逗号分隔后存入列表。用递归实现的话,核心是把"层数"作为递归的终止条件,每层遍历0到3的数字,逐步构建组合字符串。
递归实现代码
List<string> post = new List<string>(); // 调用递归:总层数6,每层最大值4(对应0-3的范围) GenerateCombinations(0, "", post, 4, 6); // 递归方法 void GenerateCombinations(int currentLevel, string currentCombination, List<string> result, int maxPerLevel, int totalLevels) { // 终止条件:当前层级达到总层数,保存最终组合 if (currentLevel == totalLevels) { result.Add(currentCombination); return; } // 遍历当前层的所有可能数字 for (int i = 0; i < maxPerLevel; i++) { string newCombination = currentCombination; // 非第一层时添加逗号分隔符 if (currentLevel > 0) { newCombination += ","; } newCombination += i.ToString(); // 递归进入下一层,继续构建组合 GenerateCombinations(currentLevel + 1, newCombination, result, maxPerLevel, totalLevels); } }
代码说明
currentLevel:当前处理的层级(从0开始计数),用来判断是否到达递归终点currentCombination:当前已构建完成的部分组合字符串maxPerLevel:每层数字的上限(这里传4,对应0-3的取值范围)totalLevels:总层数(对应原代码的6层嵌套循环)
这种实现的优势在于灵活性:如果需要调整层数或者每层的数字范围,只需要修改调用递归时的totalLevels和maxPerLevel参数,不用手动修改多层嵌套的循环结构。
内容的提问来源于stack exchange,提问作者Bale Garez
相关产品推荐
相关产品推荐

