ch1161741637 发表于 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
   
   

谱写未来 发表于 2017-9-13 09:26:02

看看答案

咖喱168 发表于 2017-9-15 09:30:20

嗯嗯

huangyang 发表于 2017-9-21 19:15:51

本帖最后由 huangyang 于 2017-9-21 19:17 编辑

def newfib(n):
    num={1:1}
    if n==2:
      num=2
    elif n>2:
      num = 2
      i=3
      while i<=n:
            if (num+ num)%2==0:
                num=(num+ num)//2
            else:
                num=(num+ num)
            i+=1
    return(list(num.values()))
n=int(input('Please input the number of series: '))
print(newfib(n))

SuperBoy007 发表于 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

myrx98 发表于 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)

#简单

总有理 发表于 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+list1) %2 == 1:
                                list1.append(list1+list1)
                        elif (list1+list1) %2 == 0:
                                list1.append(int((list1+list1)/2))
                        a+=1
        elif n == 1:
                list1.append(1)
        return list1

流月飞星 发表于 2017-10-25 20:24:03

solomonxian 发表于 2017-8-28 21:16
数列形式变化不大

能解释一下代码吗~看不懂了,谢谢

啊啊aa 发表于 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)

solomonxian 发表于 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

流月飞星 发表于 2017-10-27 19:31:40

solomonxian 发表于 2017-10-27 18:51
一句一句来是这样的

明白了,多谢{:5_108:}{:5_108:}{:5_108:}

shigure_takimi 发表于 2017-12-2 03:17:44

本帖最后由 shigure_takimi 于 2017-12-2 03:19 编辑

def newfib(n):
    fib =
    fib = 1
    fib = 2
    for i in range(2, n):
      fib = fib + fib
      if fib%2 == 0:
            fib //= 2
    return fib

print(newfib(12))


##输出:

776667 发表于 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 =
    print(result)

咕咕鸡鸽鸽 发表于 2019-3-2 13:52:06

kankan

永恒的蓝色梦想 发表于 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

小陨aoq 发表于 2020-7-31 20:25:02

学习学习

夶夶 发表于 2020-8-3 17:19:28

{:5_108:}

19971023 发表于 2020-8-6 10:42:25

1

aironeng 发表于 2020-12-9 08:44:15

学习

holiday_python 发表于 2021-4-11 21:38:36

看看答案
页: 1 2 [3] 4
查看完整版本: Python:每日一题87(答题领鱼币)