【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 }