最近在書上發現了一個列印楊輝三角前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行的楊輝三角數字就特别大了,數字還有個問題就是列印的占位符不太夠用,會擠在一起,不太好看。有興趣可以玩一下。
看來,認真看書還是特别有必要的,代碼必須弄明白裡面的核心内容,不能隻記個大概,不然就會像今天這樣,出現一系列的問題。