鱼C论坛

 找回密码
 立即注册
查看: 12554|回复: 99

[技术交流] Python:每日一题 6

[复制链接]
发表于 2017-3-26 13:51:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 新手·ing 于 2017-3-26 13:58 编辑

题目斐波那契数列。
程序分析斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。

欢迎小伙伴们,一起答题!
如果你有能力,欢迎加入我们!
已经上车老司机:@ooxx7788  
点我上车

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-3-26 13:55:55 | 显示全部楼层
@冬雪雪冬 @jerryxjr1220
来新题目啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-26 14:00:09 | 显示全部楼层
#斐波那契数列。
def fib(n):
        a,b = 1,1
        for i in range(n-1):
                a,b = b,a+b
        return a
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 2

使用道具 举报

发表于 2017-3-27 10:25:18 | 显示全部楼层
def fib(n):
    yield 0
    x = 1
    y = 1
    yield x
    for i in range(2, n):
        x, y = y, x + y
        yield x
for i in fib(10):
    print(i)

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
新手·ing + 1 + 1 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-4-1 00:32:41 | 显示全部楼层
这个递归之前学的的时候知道,不喜欢递归,跳过不做
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-1 18:00:12 | 显示全部楼层
gopythoner 发表于 2017-4-1 00:32
这个递归之前学的的时候知道,不喜欢递归,跳过不做

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-11 14:32:05 | 显示全部楼层
s=[0,1]
for i in range(30):
    s.append(s[-1]+s[-2])
    print(s[-1],end=' ')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-17 21:22:57 | 显示全部楼层
# 斐波那契数列  方法1 :

def fp(a,b):   
    a = a + b
     #  不知道怎么在递归里面停下
    if a>=2000000000000000000 :
        p = input()
    print(a)
    fp(b,a)
a = 0
b = 1
print(a)
print(b)
fp(a,b)


# 斐波那契数列   方法2 :
a = 0
b = 1
i = 0
print(a)
print(b)
for i in range(20):
    c = a
    a = b
    b = b + c
    print(b)

# 0 1 1 2 3 5 8 13
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-17 22:17:41 | 显示全部楼层
斐波那契数列不是从1开始么- -
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-17 22:17:49 | 显示全部楼层
def goldlist(n):
    if n == 1:
        return [1]
    if n == 2:
        return [1,1]
    total = [1,1]
    for i in range(2,n):
        total.append(total[i-1]+total[i-2])
    return total

print goldlist(10)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
新手·ing + 3 + 3 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-22 21:33:15 | 显示全部楼层
斐波那契数列来源于两只兔子羞羞的计划生育问题,我觉得应该是从1,1开始的吧
递归的方式
def fib(n):
    """递归的方式(太慢了),参数输入需要的斐波那契数列的第n项"""
    if n <= 1:
        return 1
    else:
        return fib(n-1) + fib(n-2)
迭代的方式
def fib2(n):
    """迭代的方式,参数输入需要的斐波那契数列的第n项"""
    num1,num2 = 1,1
    for i in range(n-1):
        num1,num2 = num1+num2, num1
    return num1
知乎上看到一行的代码,模仿写了一个
# 知乎上看到的一行打印斐波那契数列,次数n在最后那个range那
print([x[0] for x in [(a[i][0], a.append((a[i][1], a[i][0]+a[i][1]))) for a in ([[1,1]],) for i in range(100)]])

# 模仿上面写的
print([b[0] for b in [(a[-1], a.append(a[-1]+a[-2])) for a in ([1,1],) for i in range(100)]])

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
新手·ing + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-2 17:32:56 | 显示全部楼层
def myfib1(n,f=0,s=1):# n用来控制运算次数,f表示运算前第一个值,s表示运算前第二个值
    if n == 0:
        return f# 这个很重要,返回的就是结果。
    else:
        return myfib1(n-1,s,f+s)# n用来控制运算次数,s表示运算后第一值,f+s表示运算后的第二个值。(0,1) (1,1) (1,2) (2,3)
print(myfib1(100))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-27 17:36:40 | 显示全部楼层
def Fib_1(x):
    if x == 1 or x == 2:
        return 1
    elif x > 1:
        return Fib_1(x-1) + Fib_1(x-2)
def Fib_2(x):
    a = b = 1
    for i in range(x-2):
        a,b =b,a+b
    return b
for i in range(1,11):
    print(Fib_1(i))
    print(Fib_2(i))
以上
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-30 21:39:27 | 显示全部楼层
n = int (input ("Please input the number:"))
l = [0,1]
i = 1
if n == 1:
    print (0)
elif n == 2:
    print (0,1)
elif n>2:
    while n>= 3:
        temp = l[i-1]+l[i]
        l.append(temp)
        i += 1
        n -= 1
    for each in l:
        print (each,end=' ')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-2 18:44:59 | 显示全部楼层
n=1
i=1
for a in range(1,100):
      print(i)
      print(n)
      i=i+n
      n=i+n     
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 3 反对 0

使用道具 举报

发表于 2017-6-10 14:26:22 | 显示全部楼层
def fuction1(a,i):
    '''创建列表'''
    while i != 0:
        a.append(0)
        i -= 1

'''
函数1测试代码
a = []
i = 2
fuction1(a,i)
print(a)
'''


def fuction2(a,i):
    '''根据i创捷斐波那契数列'''
    a[0] = 0
    a[1] = 1
    a[2] = 1
    j = 3
    while j!=i :
        a[j] = a[j-1] + a[j-2]
        j += 1

a = []
i = int(input('输入需要显示斐波那契数列的个数:'))
fuction1(a,i)
fuction2(a,i)
print(a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-20 00:20:06 | 显示全部楼层
def fibonacci_list(x):
    def fibonacci(y):
        if y == 1:
            return 0
        if y == 2:
            return 1
        return fibonacci(y-2) + fibonacci(y-1)
    count = 1
    result_list = []
    while count <= x:
        result_list.append(fibonacci(count))
        count += 1
    return result_list
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-13 12:55:14 | 显示全部楼层
本帖最后由 bozhen 于 2017-8-13 12:58 编辑
def number(n):
    if n == 1:
        return 0
    elif n == 2:
        return 1
    else n >= 3:
        return number(n-1) + number(n-2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-20 17:59:59 | 显示全部楼层
def fib(n):
    if n == 1:
        result = 0
    elif n == 2:
        result = 1
    elif n > 2:
        result = fib(n - 1) + fib(n - 2)
    return result
n = int(input('请输入你想求斐波拉契数列的第几项:'))
print('斐波拉契数列的第%s项是%d。' % (n,fib(n)))

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-8-23 10:13:13 | 显示全部楼层
print("----------------斐波那契数列---------------")

def fibonacci(n):
    x = 0
    y = 1

    for i in range(n):
        x,y = y,x+y

    return x



for j in range(10):
    print(fibonacci(j))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 10:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表