题解 | #圣诞树#
圣诞树
https://www.nowcoder.com/practice/9a03096ed8ab449e9b10b0466de29eb2
import java.util.Scanner; public class Chkis { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); //输入树的大小 Three.function(n); } }
class Three{ public static void f(int m) {//封装输出空格的方法 for(int j=0;j<=m;j++) System.out.printf(" "); } public static void function(int n) { int s=n; int tab=3*s-1; //首行第一个*的空格数,其余行为tab-- int temp=3; //中间每个三角形之间的空格数 for(int m=1;m<=n;m++) {//【外循环:三角形行数】 (以完整三角形为一行 即三行为一行) temp=3; for(int i=1;i<=3;i++) {//【内循环:每个三角形分三行】 f(tab); tab--; for(int k=0;k<m;k++) {//【单行上三角形数】一行有几个三角形 由外循环计数器m确定 第m行有m个 for(int j=0;j<i;j++) {//【单行上星星数】 i:三角形的第几行 输出时第1行则* 第2行** System.out.printf("* ");} f(temp);}//行内每个三角形间空格 temp-=2;//每两行三角形间空格数差2 System.out.println("");//输出一行后 再换行 } } int t=3*n;//树干 for(int i=0;i<n;i++) { f(t-1); System.out.println("*");} } }