【JAVA练习】- 一个逻辑题

2018-06-18 02:54:37来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

打印
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         }

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Java web.xml 配置技巧—动态欢迎页地址

下一篇:关于Spring data JPA