C# 如何将输出三角形的三层for循环优化为两层循环
C# 三角形输出代码循环层数优化方案
原代码逻辑说明
原代码的实际输出规则为:输入整数input后,共输出input行内容,每行由「i个+拼接input-i个空格」的子串重复input次后换行。
原三层循环中最内层的ch循环仅用来生成固定格式的单段子串,可直接简化省去,最终实现两层循环结构,运行逻辑、输出效果和原代码完全一致。
优化后代码(两种实现)
实现1:使用内置字符串构造方法(性能最优)
var input = Convert.ToInt32(Console.ReadLine()); // 第一层循环:控制输出的行数 for (var i = 1; i <= input; i++) { // 第二层循环:控制单段子串的重复次数 for (var tr = 1; tr <= input; tr++) { // 直接生成指定长度的+和空格子串,省去最内层字符遍历循环 Console.Write(new string('+', i) + new string(' ', input - i)); } Console.WriteLine(); }
实现2:纯循环实现(不依赖内置字符串构造)
var input = Convert.ToInt32(Console.ReadLine()); for (var i = 1; i <= input; i++) { // 第二层循环:直接遍历单行所有需要输出的字符,总长度为input*input for (var pos = 1; pos <= input * input; pos++) { // 取模计算当前位置对应子串内的偏移,判断输出+还是空格 var chOffset = pos % input == 0 ? input : pos % input; Console.Write(chOffset <= i ? "+" : " "); } Console.WriteLine(); }
内容的提问来源于stack exchange,提问作者foder.
相关产品推荐
相关产品推荐

