最近在书上发现了一个打印杨辉三角前8行的代码,刚开始以为不是很难,结果打印的时候就出了一堆问题,这里写出详细过程。
首先介绍下什么是杨辉三角(一图胜千言)

简单介绍下规律:第2行的2=1+1,3=1+2,4=1+3...
(用数组就是a[i][j]=a[i-1][j-1]+a[i-1][j],这就是代码实现的关键点)
我开始没有仔细看,回宿舍就靠印象写了一遍
结果答案出乎意料
然后我就很奇怪,到底是哪里出了问题。
分析代码,我就发现好像我的a[0][1]都被打印出来了,这样就肯定是出现哪个问题了。
首先我把重点放在了for循环的过程,于是我测试了一下,得出一些重要结论(我之前没有深刻理解for循环),对于嵌套for循环,这里如果if不满足就直接else了,所以
不加括号也是可以的。
然后测试了一下嵌套for循环打印的数字
果然,01都被打印出来了,意味着a[0][1],a[0][2]这些都出来了...
显然不符合杨辉三角的打印。
然后就是要限制i=0时候,j只能=0;i=1,j只能=0或1...
然后我就把灵光一闪,把第二个for循环的条件改成了j<8-(7-i),这样就可以限制了
......然后我回过头仔细看了书,发现书上是j<=i,和我的j<8-(7-i)是一个意思........
不仔细看书的后果...
书上是只打印杨辉三角的8行,我想了一下能不能打印自定义的行数呢,但是数组内不能输入变量,但是我找到一个勉强能用的办法(不能打印n行,但是差不多够用了)
其实,超过20行的杨辉三角数字就特别大了,数字还有个问题就是打印的占位符不太够用,会挤在一起,不太好看。有兴趣可以玩一下。
看来,认真看书还是特别有必要的,代码必须弄明白里面的核心内容,不能只记个大概,不然就会像今天这样,出现一系列的问题。