Java程序,编程输出如下数字图案,最好带解释!

136101525914481371211... 1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
展开
 我来答
这个名有人取了
2015-05-03 · TA获得超过685个赞
知道小有建树答主
回答量:311
采纳率:100%
帮助的人:306万
展开全部

其实只要算出第i行第j列的数是第几个数就行了(数的排列规律应该能看出来吧)

第i行第j列的数在第(i+j)条对角线上(从零开始),前面就有i+j条对角线

数的个数就是1+2+...+(i+j),在加上同一条对角线上前面的数的个数为j

所以公式就出来了 代码如下,请采纳

class  Main
{
 public static void main(String[] args) 
 {
  for(int i=0;i<5;i++)
  {
   for(int j=0;j<5-i;j++)
   {
    int n = (1+i+j)*(i+j)/2+j+1;
    System.out.print(n+" ");
   }
   System.out.println();
  }
 }
}
更多追问追答
追问
不是很明白,对角线?
追答

这些数不是沿着对角线排列的么,如图

匿名用户
2015-05-03
展开全部
public class Test {

public static void main(String[] args) {
int x = 1; //x代表行,从第一行第一个数1开始

for(int i = 1 ; i <= 5 ; i ++ ) {

int y = x;//y代表列,每行第一个数

System.out.print(x + "  ");//打印每行第一个数

for(int j = i; j < 5 ; j ++) {
/**
 * 1(+2)  3(+3)  6(+4)  10(+5)  15 
 * y(j+1) y(j+1) y(j+1) y(j+1)
 * j = i ,行数增加,列数减少.
 */
y += j + 1;
System.out.print(y + "  ");
}
System.out.println(); 
/**
 * 1(x)  + 1(i)
 * 2(x)  + 2(i) 
 * 4(x)  + 3(i)
 * 7(x)  + 4(i)
 * 11(x) + 5(i)
 *
 * 每下一行的第一个数 = 当前行的第一个数 + 行数i
 * 在行数 i ++ 之前,得到下一行第一个数 x = x + i;
 */
x += i; 
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
润泽且素淡灬瑰宝h
2015-05-03 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3561
采纳率:3%
帮助的人:1884万
展开全部
public class Test
{
public static void main(String[] args) {
for(int i=0;i<5;i++){
for(int j=0;j<5-i;j++){
int n = (1+i+j)*(i+j)/2+j+1;
System.out.print(n+" ");
}
System.out.println();
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式