https://www.nowcoder.com/acm/contest/67/G
递归--->递归的第一层定全局位置,往下一层层递归逐渐完善图形,也就是说通过将步长与递归深度联系起来的方式来控制图形各部分的绘制
该问题的要求是输出一些图案,
图案包括很多空格,这时应用数组来存放每个位置的字符(首先使用空格对字符数组进行初始化),
初始化之后就要想办法将图案字符赋值给字符数组,这时如果人为的暴力赋值....2333....(真★码农),
可注意到其赋值很有规律,这时首先想到的是找到规律,然后利用循环进行赋值,然而由于其当前图案是和上一图案的四倍重新排列的,也就是说具有递归性(或许可以说是一层连一层,循环不好写),这时就要想到循环的"兄弟"---递归,由于问题是一层连一层的,所以用递归是个不错的选择,
那么接下来就是对递归过程步长的控制了
(1、找规律,引入一个变量 tt 控制步长(该题中的步长和递归层数(也就是图案编号)有关,)
2、然后另外的两个变量 i 、j 分别 +(-) 步长tt 来表示移动横纵坐标
3、写出边界条件,也就是找到出口进行赋值(不能一直递归下去啊,总要找出路,毕竟真正的目的就是赋值而不是递归下去)).
.然后就..AC...??不不不,由于如果这样草率地输出很容易就将多输出很多空格,这是还应该遍历一下,找到每行图案的末端,进行标记,防止多输出空格