楊輝三角
阿新 • • 發佈:2020-08-09
楊輝三角規律:下一行的值為:上一行分別在前端和末尾新增0,形成兩個新列表,兩個新列表的每個元素相加得到的新列表。
實踐:
線上 python 執行:菜鳥驛站
迴圈實現
#!/usr/bin/python def triangles(max=10): arr = [1] n = 0 while n < max: print(arr) arr1 = [0] + arr[:] arr2 = arr[:] + [0] arr = [arr1[i] + arr2[i] for i in range(len(arr1))] n += 1 triangles()
生成器實現
# -*- coding: utf-8 -*- def triangles(): arr = [1] while True: yield arr arr1 = [0] + arr[:] arr2 = arr[:] + [0] arr = [arr1[i]+arr2[i] for i in range(len(arr1))] # 期待輸出: # [1] # [1, 1] # [1, 2, 1] # [1, 3, 3, 1] # [1, 4, 6, 4, 1] # [1, 5, 10, 10, 5, 1] # [1, 6, 15, 20, 15, 6, 1] # [1, 7, 21, 35, 35, 21, 7, 1] # [1, 8, 28, 56, 70, 56, 28, 8, 1] # [1, 9, 36, 84, 126, 126, 84, 36, 9, 1] n = 0 results = [] for t in triangles(): results.append(t) n = n + 1 if n == 10: break for t in results: print(t) if results == [ [1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1], [1, 6, 15, 20, 15, 6, 1], [1, 7, 21, 35, 35, 21, 7, 1], [1, 8, 28, 56, 70, 56, 28, 8, 1], [1, 9, 36, 84, 126, 126, 84, 36, 9, 1] ]: print('測試通過!') else: print('測試失敗!')
線上js執行: jsbin.com
js 實現-迴圈
function triangles(max = 10) {
const arr = [1]
let n = 0
while (n < max) {
console.log(arr)
const arr1 = [0, ...arr]
const arr2 = [...arr, 0]
arr1.forEach((item, i) => arr[i] = arr1[i] + arr2[i])
n++
}
}
triangles()
js 迭代器實現
function *triangles() { const arr = [1] let n = 0 while (true) { yield arr const arr1 = [0, ...arr] const arr2 = [...arr, 0] arr1.forEach((item, i) => arr[i] = arr1[i] + arr2[i]) } } const res = triangles() Array(10).fill(1).forEach((item, i) => { console.log(res.next().value) })