62,614
社区成员
发帖
与我相关
我的任务
分享
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
if (i % 2 != 0) {
System.out.print(i + "\t");
int z = i;
for (int b = 0; b < list.size(); b++) {
z = list.get(b) + z;
System.out.print(z + "\t");
list.set(b, z-list.get(b));//关键点 改值是 你输出的值减去上一个坐标的值
}
System.out.println();
list.add(z);//每次添加的值为最后一次输出的值
}
}
楼主看我的 简单易懂
public class Dome {
public static void getOneRow(int start) {
for (int i = 1; (i - 1) * 2 < start; i++) {
System.out.print(getOne(start, i) + ",");
}
}
public static int getOne(int start, int n) {
if (n == 1) {
return start;
} else {
return getOne(start, n - 1) + getOne(start - 2, n - 1);
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入首项:");
int start = sc.nextInt();
getOneRow(start);
}
}
import java.util.Scanner;
public class CSDN {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int i = input.nextInt();
for (int x = 1; x <= (i + 1) * 0.5; x++) {
int s = (int) Math.pow(2, (x - 1)) * (i - x + 1);
System.out.print(s + "\t");
}
}
}
int num=5;
int[] old=new int[num];
int[] ns=new int[num];
for(int i=1;i<num+1;i++){
ns[0]=2*i-1;
System.out.print(ns[0]+" ");
for(int j=1;j<i;j++){
int re=old[j-1]+ns[j-1];
ns[j]=re;
System.out.print(re+" ");
}
System.out.println();
old=ns;
ns=new int[num];
}
System.out.println("====================");
for(int i:old){
System.out.print(i+" ");
}
}
import java.util.Scanner;
/**
题目:
打印
1
3 4
5 8 12
7 12 20 32
9 16 28 48 80
.....
输入任意一个奇数,输出那一行的数据
思路分析:提取因式
2^0 ^1 ^2 ^3 ^4 ^5
___________________
| *1 *2 *4 *8 *16 *32
|___________________
1| 1
2| 3 2
3| 5 4 3
4| 7 6 5 4
5| 9 8 7 6 5
6| 11 10 9 8 7 6
n n-1 n-2 n-3
n/2+1
*/
public class Main {
public static void main(String[] args) {
while (true) {
System.out.println("\n请输入一个整数:");
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
int line = number / 2 + 1;
for (int i = 0; i < line; i++) {
System.out.print((int) ((number - i) * Math.pow(2, i)) + "\t");
}
}
}
}
结果:
请输入一个整数:
3
3 4
请输入一个整数:
5
5 8 12
请输入一个整数:
7
7 12 20 32
请输入一个整数:
9
9 16 28 48 80
public class Demo1 {
/**
*
给定一个正整数n,打印第n行,每行的规律如下:
1
3 4
5 8 12
7 12 20 32
9 16 28 48 80
两条规律:
1.第i个数字 = 第i-1个数字 + 上一行第i-1个数字
2.第i个数字 - 上一行第i个数字 = 2 * (第i-1个数字 - 上一行第i-1个数字)
*/
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int cur = 2 * n - 1, pre = cur - 2, diff = 2;
System.out.print(cur + "\t");
for (int i = 1; i < n; i++) {
cur += pre;
pre = cur - 2 * diff;
// 缓存第i个数与上一行第i个数的差,这样可以避免使用pow()
diff = cur - pre;
System.out.print(cur + "\t");
}
}
}
/**
* 根据当前数组,计算下一个数组
* @param arr
* @return
*/
public static int[] nextArr(int... arr) {
int[] res = new int[arr.length + 1];
for(int i = 0, len = res.length; i < len; ++i){
if(i == 0) {
res[i] = arr[i] + 2;
} else {
res[i] = res[i - 1] + arr[i - 1];
}
}
return res;
}
/**
* 格式化输出
* @param arr
*/
public static void formatPrintln(int[] arr){
Arrays.stream(arr).forEach(d -> System.out.print(d + " "));
System.out.println();
}
@Test
public void test02(){
int[] arr = {1}; //原始数组
for(int i = 0; i < 6; i++){
formatPrintln(arr); //打印当前
arr = nextArr(arr); //获取下一行
}
}