套正方形

问题描述
  给定正方形边长width,如图按规律输出层层嵌套的正方形图形。
  注意,为让选手方便观看,下图和样例输出均使用“”代替空格,请选手输出的时候使用空格而不是“”。

width=6:
在这里插入图片描述
输入格式
  仅一行一个整数width。
输出格式
  按规律输出图形,不要输出多余空格。
样例输入
10
样例输出
在这里插入图片描述
数据规模和约定
  width满足width=4n+2,n为正整数。

且width<=50。
  
看到此题,小编第一反应是找规律,首先整体而言,第i行和倒数i行一样,则可以试着用递归来保持这个特征,这样观察n行就换成观察n/2行的问题了;
再者,观察奇数行,总是以 i/2 个 *- 开头,i/2 个 -结尾,其余是 若干个 ;偶数行:总是以 i/2 个 *- 开头,i/2 个 -*结尾,其余是 若干个-

package Main;

import java.util.*;
public class Main {
	public static void main(String []args) {
		Scanner input=new Scanner(System.in);
	int a=input.nextInt();
	hua(1,a);
}
	public static void hua(int b,int a) {
		if(b<=a/2)
		{
			if(b%2==1) {
				for(int i=1;i<=b/2;i++) 
					System.out.print("* ");
				for(int i=1;i<=a-4*(b/2);i++)
					System.out.print("*");
				for(int i=1;i<=b/2;i++) 
					System.out.print(" *");
				System.out.println();
			}
			else {
				for(int i=1;i<=b/2;i++) 
					System.out.print("* ");
				for(int i=1;i<=a-4*(b/2);i++)
					System.out.print(" ");
				for(int i=1;i<=b/2;i++) 
					System.out.print(" *");
				System.out.println();
				
			}
			hua(b+1,a);
			if(b%2==1) {
				for(int i=1;i<=b/2;i++) 
					System.out.print("* ");
				for(int i=1;i<=a-4*(b/2);i++)
					System.out.print("*");
				for(int i=1;i<=b/2;i++) 
					System.out.print(" *");
				System.out.println();
			}
			else {
				for(int i=1;i<=b/2;i++) 
					System.out.print("* ");
				for(int i=1;i<=a-4*(b/2);i++)
					System.out.print(" ");
				for(int i=1;i<=b/2;i++) 
					System.out.print(" *");
				System.out.println();
				
			}
		}
	}
}

在这里插入代码片
发布了130 篇原创文章 · 获赞 16 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/feiqipengcheng/article/details/103624302