【JAVA练习】- 一个逻辑题

打印
1
3    4
5   8    12
7   12   20   32
9    16  28    48   80 
.....


输入任意一个奇数,输出那一行的数据

 

第一种方法找到规律进行归纳等式:

1 public static void main(String[] args) {
2         System.out.println("请输入任意一个奇数: ");
3         Scanner input = new Scanner(System.in);
4         int i = input.nextInt();//任意一个奇数
5         input.close();
6         int j = (i + 1) / 2;//行数
7         for(int p = 1; p <= j; p++) {//p为行数的项数
8             System.out.print( (int)( Math.pow(2,p) * j - p * Math.pow(2,p-1) ) + " ");//观察得出数值与项数,行数的关系
9         }

 

第二中方法递归方法:

 1 int[][] num = new int[j][j];//二维数组储存数据
 2         for(int p = 0; p < j; p++) {//p代表数组纵轴与上面的p不同
 3             for(int m = 0; m < j; m++) {//m代表数组横轴
 4                 if(m == 0) {//横轴为首项时,数值为2*行数-1  行数=p+1
 5                     num[p][m] = 2*p + 1;
 6                 }
 7                 else if( p > 0) { //当纵轴不为0时,即不是第一行时
 8                     num[p][m] = num[p][m-1] + num[p-1][m-1];
 9                 }
10             }
11         }
12         for(int m = 0; m < j; m++) {
13             System.out.print(num[j-1][m]+" ");
14         }

 

posted @ 2018-03-09 14:14  isco_22  阅读(231)  评论(0编辑  收藏  举报