编程解题系列------01

剑_雪 2017-03-11 11:35:07

浏览量: 316

要想成为一个合格的量化交易者,必需要有扎实的算法基础。借贵地记录一下自己的学习过程。


*  题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?【即 斐波那契数列】

3条回复 添加回复
tingtingliu103

a=b=1
for i in range(1,13):
    if i<3:
        c=1
    else:
        c=a+b
    print(i,':',c)
    a=b
    b=c



结果:

1 : 1

2 : 1

3 : 2

4 : 3

5 : 5

6 : 8

7 : 13

8 : 21

9 : 34

10 : 55

11 : 89

12 : 144



2017-03-11 12:00:37
剑_雪

楼上正确!

我贴个另类的吧!

import numpy as np
n=np.arange(1,13)
phi=(1+np.sqrt(5))/2
fibonacci=(phi**n-(-1/phi)**n)/np.sqrt(5)
print(np.rint(fibonacci))


2017-03-11 13:43:33
tingtingliu103

另解: 递归思路

def fb(n):
    if n==1 or n==2:
        return 1
    else:
        return fb(n-1)+fb(n-2)
print('一年后有小兔崽子:',fb(12))

一年后有小兔崽子: 144对



2017-03-11 14:36:07
1
提交
Copyright © 2004-2017 京东JD.com 版权所有 | 投资有风险,购买需谨慎