鱼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 编辑
def newfib(n):
    num={1:1}
    if n==2:
        num[2]=2
    elif n>2:
        num[2] = 2
        i=3
        while i<=n:
            if (num[i-2]+ num[i-1])%2==0:
                num[i]=(num[i-2]+ num[i-1])//2
            else:
                num[i]=(num[i-2]+ num[i-1])
            i+=1
    return(list(num.values()))
n=int(input('Please input the number of series: '))
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 | 显示全部楼层
def newfib(n):
        list1 = []
        a = 3
        if n>1:
                list1.append(1)
                list1.append(2)
                while a<n+1:
                        if (list1[a-2]+list1[a-3]) %2 == 1:
                                list1.append(list1[a-2]+list1[a-3])
                        elif (list1[a-2]+list1[a-3]) %2 == 0:
                                list1.append(int((list1[a-2]+list1[a-3])/2))
                        a+=1
        elif n == 1:
                list1.append(1)
        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
能解释一下代码吗~看不懂了,谢谢

一句一句来是这样的
def newfib(n):
    a = 1
    b = 2
    for i in range(1,n):
        if (a+b)%2:
            temp = a
            a = b
            b = temp + a
        else:
            temp = a
            a = b
            b = (temp + a)//2
    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 编辑
def newfib(n):
    fib = [1 for i in range(n)]
    fib[0] = 1
    fib[1] = 2
    for i in range(2, n):
        fib[i] = fib[i-1] + fib[i-2]
        if fib[i]%2 == 0:
            fib[i] //= 2
    return fib

print(newfib(12))


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

使用道具 举报

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

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

使用道具 举报

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

使用道具 举报

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

生成器:
def newfib(n):
    a=1
    b=2
    for _ in range(n):
        yield a
        l=a+b
        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-11-23 07:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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