问题描述
输出一个n行的与样例类似的数字三角形,必须使用递归来实现
输入格式
一个正整数数n,表示三角形的行数
输出格式
输出一个与样例类似的n行的数字三角形,同一行每两个数之间用一个空格隔开即可(图中只是为防止题面格式化而用'_'代替空格)
样例输入
4
样例输出
___1
__2_3
_4_5_6
7_8_9_10
数据规模和约定
n<=20
解题思路:
未使用递归,双层for解决。外层控制行,内层控制空格数和数字,注意每行最后不要留空格。
递归的方法写的有点啰嗦了。
java代码:(非递归)
import java.io.*;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int x = 1;
StringBuilder builder = new StringBuilder();
for(int i = 1;i <= n;i++) {
for(int j = n - i;j > 0;j--) {
builder.append(" ");
}
for(int j = 1; j < i;j++) {
builder.append(x++ + " ");
}
builder.append(x++);
builder.append("\n");
}
System.out.print(builder.toString());
}
}
java代码:(递归)
import java.io.*;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
method(n + 1, n);
System.out.print(builder.toString());
}
static StringBuilder builder = new StringBuilder();
static int num = 2;
public static void method(int temp,int n) {
if(temp == 1) {
for(int i = 1;i < n;i++) {
builder.append(" ");
}
builder.append("1\n");
return;
}
method(--temp, n);
if(temp != 1) {
for(int i = 1;i <= n - temp;i++) {
builder.append(" ");
}
for(int i = 1; i < temp;i++) {
builder.append(num++ + " ");
}
builder.append(num++);
builder.append("\n");
}
}
}
提交截图: