關于楊輝三角是什么東西,右轉維基百科:楊輝三角
稍微看一下直觀一點的圖:
楊輝三角有以下幾個特點:
每一項的值等于他左上角的數和右上角的數的和,如果左上角或者右上角沒有數字,就按0計算。
第N層項數總比N-1層多1個
計算第N層的楊輝三角,必須知道N-1層的數字,然后將相鄰2項的數字相加,就能得到下一層除了最邊上2個1的所有數字。 聽起來有點像遞歸的思想,我們不妨假設我們已經知道N-1層的數字,來計算一下N層的數字吧。
稍微完善一下代碼:
if __name__ == "__main__":
for line in yanghui_trangle1(5):
print line
tips: 上面的程序并沒有考慮數據格式化的問題,也就是說輸出不是完美的三角形。
鑒于最近在學習erlang,補上一個erlang版本的,性能上沒有測試過,不過還是要驚嘆于函數式語言的表達能力:
triangle_next(P) ->
lists:zipwith(fun(X, Y) -> X+Y end, [0|P], P ++ [0]).
triangle(1) ->
[[1]];
triangle(N) ->
L = triangle(N - 1),
[H|_] = L,
[triangle_next(H)|L].
新聞熱點
疑難解答
圖片精選