日期:2014-05-17 浏览次数:20867 次
using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { 画三角形(1, 1, 1, 9); Console.ReadKey(); } private static void 画三角形(int x, int y, int a, int n) { for (var i = 0; i < n - 1; i++) 输出(x, y++, a++); for (var i = 0; i < n - 1; i++) 输出(x++, y, a++); for (var i = 0; i < n - 1; i++) 输出(x--, y--, a++); n -= 3; if (n > 0) { x++; y += 2; 画三角形(x, y, a, n); } } private static void 输出(int x, int y, int a) { Console.CursorLeft = x * 4; Console.CursorTop = y * 2; Console.Write(a); } } }
------解决方案--------------------
有啦,不知道C#如何实现,但是我的想法可能太绕了。
比如 输入 5
计算一个值 1+2+3+4+5=15 则所有打印的数字为1~15
1~15 分别存入 一个数组,比如数组A[0]=1 ..类推
现在,我们找数字的打印顺序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
我们用坐标标示
11 21 31 41 51[1结束的顺序已输入的数字5为结束标志]
然后是最低下 52 53 54 55
这个三角形式逆时针包围,所以,紧接着是上一行缩进
44 33 22 接着笔直下来
32 42 然后横行走 43 如果还有就继续上一行缩进
这些坐标可以是对应地址,可以是数组的下标。
排列下就是 11~55
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
11 21 31 41 51 52 53 54 55 44 33 22 32 42 43
11
21 22
31 32 33
41 42 43 44
51 52 53 54 55
1
2 12
3 13 11
4 14 15 10
5 6 7 8 9
------解决方案--------------------