问题描述
输出一个n行的与样例类似的数字三角形,必须使用递归来实现
输入格式
一个正整数数n,表示三角形的行数
输出格式
输出一个与样例类似的n行的数字三角形,同一行每两个数之间用一个空格隔开即可(图中只是为防止题面格式化而用'_'代替空格)
样例输入
4
样例输出
___1
__2_3
_4_5_6
7_8_9_10
数据规模和约定
n<=20
未使用递归,双层for解决。外层控制行,内层控制空格数和数字,注意每行最后不要留空格。
递归的方法写的有点啰嗦了。
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()); } }
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"); } } }