如何在C#中打印如下所示的倒序数字金字塔?
实现特定数字图案的解决方案
你想要实现的目标数字图案:
1 3 2 6 5 4 10 9 8 7
你的现有代码只能生成每行递增的图案,要实现目标效果,需要调整数字的起始值和输出顺序:
规律拆解
目标图案的核心特点:
- 第i行包含i个数字
- 第i行的起始数字是前i个自然数的总和,计算公式为
i*(i+1)/2 - 每行数字从起始值开始依次递减输出
修改后的代码
for(int i = 1; i <= 4; i++) { // 计算当前行的起始数字 int startNum = i * (i + 1) / 2; for(int j = 0; j < i; j++) { Console.Write(startNum - j); // 数字间添加空格,避免行尾多余空格 if(j != i - 1) { Console.Write(" "); } } Console.WriteLine(); }
代码说明
- 外层循环控制行数,从1到4
- 每行起始数通过公式计算,比如第4行起始数是
4*5/2=10,完全匹配目标图案 - 内层循环从0到i-1,每次输出
startNum - j,实现从起始数递减的效果 - 空格判断保证数字间有间隔,同时不会在每行末尾多出空格
内容的提问来源于stack exchange,提问作者Vasant Raval
相关产品推荐
相关产品推荐

