鱼C论坛

 找回密码
 立即注册
查看: 11221|回复: 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 | 显示全部楼层
  1. #斐波那契数列。
  2. def fib(n):
  3.         a,b = 1,1
  4.         for i in range(n-1):
  5.                 a,b = b,a+b
  6.         return a
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 2

使用道具 举报

发表于 2017-3-27 10:25:18 | 显示全部楼层
  1. def fib(n):
  2.     yield 0
  3.     x = 1
  4.     y = 1
  5.     yield x
  6.     for i in range(2, n):
  7.         x, y = y, x + y
  8.         yield x
  9. for i in fib(10):
  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 | 显示全部楼层
  1. s=[0,1]
  2. for i in range(30):
  3.     s.append(s[-1]+s[-2])
  4.     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开始的吧
递归的方式
  1. def fib(n):
  2.     """递归的方式(太慢了),参数输入需要的斐波那契数列的第n项"""
  3.     if n <= 1:
  4.         return 1
  5.     else:
  6.         return fib(n-1) + fib(n-2)
复制代码

迭代的方式

  1. def fib2(n):
  2.     """迭代的方式,参数输入需要的斐波那契数列的第n项"""
  3.     num1,num2 = 1,1
  4.     for i in range(n-1):
  5.         num1,num2 = num1+num2, num1
  6.     return num1
复制代码

知乎上看到一行的代码,模仿写了一个
  1. # 知乎上看到的一行打印斐波那契数列,次数n在最后那个range那
  2. 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)]])

  3. # 模仿上面写的
  4. 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 | 显示全部楼层
  1. def Fib_1(x):
  2.     if x == 1 or x == 2:
  3.         return 1
  4.     elif x > 1:
  5.         return Fib_1(x-1) + Fib_1(x-2)
  6. def Fib_2(x):
  7.     a = b = 1
  8.     for i in range(x-2):
  9.         a,b =b,a+b
  10.     return b
  11. for i in range(1,11):
  12.     print(Fib_1(i))
  13.     print(Fib_2(i))
复制代码

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

使用道具 举报

发表于 2017-5-30 21:39:27 | 显示全部楼层
  1. n = int (input ("Please input the number:"))
  2. l = [0,1]
  3. i = 1
  4. if n == 1:
  5.     print (0)
  6. elif n == 2:
  7.     print (0,1)
  8. elif n>2:
  9.     while n>= 3:
  10.         temp = l[i-1]+l[i]
  11.         l.append(temp)
  12.         i += 1
  13.         n -= 1
  14.     for each in l:
  15.         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 | 显示全部楼层
  1. def fuction1(a,i):
  2.     '''创建列表'''
  3.     while i != 0:
  4.         a.append(0)
  5.         i -= 1

  6. '''
  7. 函数1测试代码
  8. a = []
  9. i = 2
  10. fuction1(a,i)
  11. print(a)
  12. '''


  13. def fuction2(a,i):
  14.     '''根据i创捷斐波那契数列'''
  15.     a[0] = 0
  16.     a[1] = 1
  17.     a[2] = 1
  18.     j = 3
  19.     while j!=i :
  20.         a[j] = a[j-1] + a[j-2]
  21.         j += 1

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

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

  2. def fibonacci(n):
  3.     x = 0
  4.     y = 1

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

  7.     return x



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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 21:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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