字母塔分为两部分来做:空白部分和字母部分。
1.空白部分:字母塔左边的空白部分用空格,字母塔右边的空白部分用换行。其中换行是在每行打印完字母之后加换行,接下来主要看字母塔左边的空格,把空格和行号 i 联系起来:
第一行(i=1):25个空格;此时让 j=(1,2,……,25),j 每遍历一个值就打印一个空格,一共打印25个空格;j的最大值为26-1
第二行(i=2);24个空格;此时让 j=(1,2,……,24),j 每遍历一个值就打印一个空格,一共打印24个空格;j的最大值为26-2
…… ……
第二十五行(i=25);1个空格;此时让 j=1,j
每遍历一个值就打印一个空格,一共打印1个空格;j的最大值为26-25
第二十六行(i=26);0个空格;此时让
j=0,j 每遍历一个值就打印一个空格,一共打印0个空格;j的最大值为26-26
我们可以看到 i 与 j 的最大值的关系 ,即 j =26- i
2.字母问题:字母的左半部分和右半部分分开来打印
左半部分:同样和行号联系起来,第一行1个字母,第二行2个字母……第二十六行26个字母,即第 i 行就有 i 个字母。其中第一行为A,第二行为AB……第二十六行为ABCD……XYZ。在每一行中后一个字母是前一个字母的ASCII码+1,即每行第一个字母为A,第二个字母为B,第 k 个字母为‘A’+k -1,故每行用一个for循环, k 从1到 i(因为第 i 行就有 i 个字母),打印输出从'A'到‘A’+k -1.
右半部分:左半部分的将前 i 个字母打印出来了,故后半部分从 i+1个字母开始,因为第 i 行共2*i-1个字母。所以后半部分只需打印从第 i+1到第2*i-1的字母,而此时是倒序打印,第 k 个字母为‘A’+2*i-1-k.