斐波那契数列
F[n]=F[n-1]+F[n-2] (n>2,F[0]=1,F[1]=1)
程序分析
初第一个数和第二个数,其余数字均由前两个数相加得到。
代码实现
使用函数实现1
2
3
4
5
6def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a+b
n += 1
输出结果为1
2
3
4
5
6
76) fib(
1
1
2
3
5
8
当然,采用生成器方式也可以实现1
2
3
4
5
6def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a+b
n += 1
此时返回结果为生成器对象,调用时候可以使用next()
或者for
循环1
2
3
4
5
6
7
8
9for i in fib(6):
print(i)
...
1
1
2
3
5
8
杨辉三角
定义见下图1
2
3
4
5
6
7
8
9
10
11 1
/ \
1 1
/ \ / \
1 2 1
/ \ / \ / \
1 3 3 1
/ \ / \ / \ / \
1 4 6 4 1
/ \ / \ / \ / \ / \
1 5 10 10 5 1
程序分析
每一行看做一个list
代码实现
1 | import operator |
输出结果
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]