鱼C论坛

 找回密码
 立即注册
楼主: 冬雪雪冬

[技术交流] Python:每日一题87(答题领鱼币)

[复制链接]
发表于 2017-9-12 21:34:35 | 显示全部楼层
def newfib(n)
first = 1
second = 2
while n>i
temp = (first+ second)%2
if temp==0:
   temp=(first+second)/2
    first = second
   second = temp
else temp !=0:
    temp=first+second
    first = second
   second = temp
   
   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-13 09:26:02 From FishC Mobile | 显示全部楼层
看看答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-15 09:30:20 From FishC Mobile | 显示全部楼层
嗯嗯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-21 19:15:51 | 显示全部楼层
本帖最后由 huangyang 于 2017-9-21 19:17 编辑
  1. def newfib(n):
  2.     num={1:1}
  3.     if n==2:
  4.         num[2]=2
  5.     elif n>2:
  6.         num[2] = 2
  7.         i=3
  8.         while i<=n:
  9.             if (num[i-2]+ num[i-1])%2==0:
  10.                 num[i]=(num[i-2]+ num[i-1])//2
  11.             else:
  12.                 num[i]=(num[i-2]+ num[i-1])
  13.             i+=1
  14.     return(list(num.values()))
  15. n=int(input('Please input the number of series: '))
  16. print(newfib(n))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-25 10:37:53 | 显示全部楼层
def newfib(n):
    a=1
    b=2
    if n==1:
        return 1
    elif n==2:
        return 2
    else:
        temp=newfib(n-1)+newfib(n-2)
        c=temp if temp%2 else temp//2
        return c
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-25 11:29:58 | 显示全部楼层
def newfib(n):
    if n == 1:
        return 1
   
    elif n == 2:
        return 2
    else:
        sm = newfib(n-1) + newfib(n-2)
   


    if sm%2 ==0:
        return int(sm/2)
    else:
        return sm


result = newfib(9)
print(result)

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

使用道具 举报

发表于 2017-9-25 12:19:05 | 显示全部楼层
  1. def newfib(n):
  2.         list1 = []
  3.         a = 3
  4.         if n>1:
  5.                 list1.append(1)
  6.                 list1.append(2)
  7.                 while a<n+1:
  8.                         if (list1[a-2]+list1[a-3]) %2 == 1:
  9.                                 list1.append(list1[a-2]+list1[a-3])
  10.                         elif (list1[a-2]+list1[a-3]) %2 == 0:
  11.                                 list1.append(int((list1[a-2]+list1[a-3])/2))
  12.                         a+=1
  13.         elif n == 1:
  14.                 list1.append(1)
  15.         return list1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-25 20:24:03 | 显示全部楼层
solomonxian 发表于 2017-8-28 21:16
数列形式变化不大

能解释一下代码吗~看不懂了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-26 09:52:47 | 显示全部楼层
def fib(cnt):
    a,b=1,2
    while cnt:
        print(a)
        a,b=b,a+b
        if b%2 == 0:
            b = b//2
        cnt -= 1

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

使用道具 举报

发表于 2017-10-27 18:51:05 | 显示全部楼层
流月飞星 发表于 2017-10-25 20:24
能解释一下代码吗~看不懂了,谢谢

一句一句来是这样的
  1. def newfib(n):
  2.     a = 1
  3.     b = 2
  4.     for i in range(1,n):
  5.         if (a+b)%2:
  6.             temp = a
  7.             a = b
  8.             b = temp + a
  9.         else:
  10.             temp = a
  11.             a = b
  12.             b = (temp + a)//2
  13.     return a
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-27 19:31:40 | 显示全部楼层
solomonxian 发表于 2017-10-27 18:51
一句一句来是这样的

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

使用道具 举报

发表于 2017-12-2 03:17:44 | 显示全部楼层
本帖最后由 shigure_takimi 于 2017-12-2 03:19 编辑
  1. def newfib(n):
  2.     fib = [1 for i in range(n)]
  3.     fib[0] = 1
  4.     fib[1] = 2
  5.     for i in range(2, n):
  6.         fib[i] = fib[i-1] + fib[i-2]
  7.         if fib[i]%2 == 0:
  8.             fib[i] //= 2
  9.     return fib

  10. print(newfib(12))


  11. ##  输出:[1, 2, 3, 5, 4, 9, 13, 11, 12, 23, 35, 29]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-27 16:26:52 | 显示全部楼层
  1. def fun87(x):
  2.     if x == 1:
  3.         return 1
  4.     if x == 2:
  5.         return 2
  6.     if not (fun87(x-2) + fun87(x-1))%2:
  7.         return (fun87(x-2) + fun87(x-1))//2
  8.     return fun87(x-2) + fun87(x-1)

  9. if __name__ == '__main__':
  10.     result = [fun87(i) for i in range(1,13)]
  11.     print(result)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-2 13:52:06 | 显示全部楼层
kankan
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-1 18:47:15 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2020-3-22 16:47 编辑

生成器:
  1. def newfib(n):
  2.     a=1
  3.     b=2
  4.     for _ in range(n):
  5.         yield a
  6.         l=a+b
  7.         a,b=b,l if l&1 else l//2
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-31 20:25:02 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-3 17:19:28 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-6 10:42:25 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-9 08:44:15 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-11 21:38:36 From FishC Mobile | 显示全部楼层
看看答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 10:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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