Python杨辉三角算法

#!/usr/bin/env python
# -*- coding: utf-8 -*-
def triangles():
      n = 1
      aboveList = []
      while True:
          if n == 1:
              aboveList = [1]
              n = n + 1
              yield [1]
          if n == 2:
              aboveList = [1,1]
              n = n + 1
              yield [1,1]
          newList = []
          for x in getMiddleList(aboveList):
              newList.append(x)
          newList.insert(0,1)
          newList.append(1)
          aboveList = newList
          n = n + 1
          yield newList
      return ‘done‘

def getMiddleList(aboveList):
    newList = []
    leftNodeVal=0
    n=1
    for x in aboveList:
        if n == 1:
            leftNodeVal = x
        else:
            newList.append(x+leftNodeVal)
            leftNodeVal = x
        n += 1
    return newList

n=0
for t in triangles():
    print(t)
    n = n + 1
    if n == 10:
        break

输出结果:

[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]

不是最佳的算法,代码比较多,后面继续研究

时间: 2024-10-14 07:06:01

Python杨辉三角算法的相关文章

python 杨辉三角

1 1 2 1 1 3 1 2 1 4 1 3 3 1 5 1 4 6 4 1 6 1 5 10 10 5 1 7 1 6 15 20 15 6 1 8 1 7 21 35 35 21 7 1 9 1 8 28 56 70 56 28 8 1 10 1 9 36 84 126 126 84 36 9 1 11 1 10 45 120 210 252 210 120 45 10 1 12 1 11 55 165 330 462 462 330 165 55 11 1 13 1 12 66 220

python杨辉三角实现练习

def yanghui(): N = [1] #先定义一个名叫N的列表 列表里面只有一个元素1 while True: #不停循环 yield N #输出N N.append(0) #在N列表的末尾加上一个新元素0 N = [N[i-1]+N[i] for i in range(len(N))] #把range(len(N))表示产生一个N个元素的列表分别带到前面中计算y = int(input('你希望的行数:')) #输入你希望的行数 n = 0 #后面调用函数次数的默认次数 for i i

实现杨辉三角的10种解法--体验Python之美

本文收集了使用python实现杨辉三角的多种解法,主要为网上收集,也有一些是自己写的.从中可以体会python编写一个算法的不同思想和Python语法的特点. 杨辉三角是什么?还是度娘吧,看起来像是这样的:                          1                          1   1                           1   2   1                         1   3   3   1               

js算法集合(二) javascript实现斐波那契数列 (兔子数列) Javascript实现杨辉三角

js算法集合(二)  斐波那契数列.杨辉三角 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列和杨辉三角进行研究,来加深对Javascript的理解. 一.Javascript实现斐波那契数列 ①要用Javascript实现斐波那契数列,我们首先要了解什么是斐波那契数列:斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为

一个超强的杨辉三角python实现方法

廖雪峰Python教程——生成器 有这么一个习题: 练习 杨辉三角定义如下: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 把每一行看做一个list,试写一个generator,不断输出下一行的list: # -*- coding: utf-8 -*- def triangles(): 在评论里发现这么一个强大的答案: 1 N = [1] 2 while True: 3 yield N 4 N.append(0) 5 N = [N[i-1] + N[i]

【LeetCode-面试算法经典-Java实现】【119-Pascal's Triangle II(帕斯卡三角形(杨辉三角)II)】

[119-Pascal's Triangle II(帕斯卡三角形(杨辉三角)II)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3, Return [1,3,3,1]. Note: Could you optimize your algorithm to use only O(k) extra

Python 中使用 for、while 循环打印杨辉三角练习(列表索引练习)。

Python中使用for while循环打印杨辉三角练习(列表索引练习). 杨辉三角是一个由数字排列成的三角形数表,一般形式如下: 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组成的,而其余的数则是等于它肩上的两个数之和. 方法一: __author__ = 'Brad' n = int(input('请输入你想打印杨辉三角

python 实现杨辉三角(依旧遗留问题)

1 #! usr/bin/env python3 2 #-*- coding :utf-8 -*- 3 print('杨辉三角的generator') 4 def triangles(): 5 6 N=[1] 7 while True : 8 yield N 9 N.append(0) 10 N = [N[i-1]+N[i] for i in range(len(N)) ] 11 12 triangles = triangles() 13 for j in range(10): 14 print

Python实现:杨辉三角思路

 杨辉三角有以下几个特点 : 每个数等于它上方两数之和. 每行数字左右对称,由1开始逐渐变大. 第n行的数字有n项. 第n行数字和为2n-1. 第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数. 第n行的第m个数和第n-m+1个数相等 ,为组合数性质之一. 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 我的思路是由于第一行只有一个元素1,所以第二行也一定是1.所以重点在计算后面几行输出的数字,先把它输进列表.