BngThea 发表于 2017-8-30 09:12:13

def newfib(n):
if not isinstance(n, int) or n < 1:
      print('传入的不是正整数!')
      return None
listfib=
if n == 1:
      print(n)
      return None
else:
    listfib.append(2)
    for i in range(2, n):
      temp = listfib + listfib
      if(temp % 2 == 0):
          temp = temp // 2
      listfib.append(temp)
print(listfib)

# newfib(30)

SC小王子 发表于 2017-8-30 10:35:46

def newfib(n):
    a,b=1,2
    if n==1:   
      print a
    elif n==2:      
      print b
    else:
      print a,b
      for i in range(n-2):
            a,b=b,a+b
            if b%2==0:
                b=b/2
            print b

if __name__=='__main__':
    n=int(input('n'))
    newfib(n)

小白写的有点烂,见谅

zhangzs 发表于 2017-8-30 10:48:09

1

3134274941 发表于 2017-8-30 15:19:11

对不对{:10_254:}
def new(n):
    if n == 1:
      return
      
    else:
      a,b=1,2
      while n:
            print(a)
            a,b = b,a+b
            if b%2 == 0:
                b = b//2

            n -= 1

a = input('请输入数字:')
print('结果为:')
b = int(a)   
print(new(b))

mmdn 发表于 2017-8-30 16:20:15

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

mmdn 发表于 2017-8-30 16:20:51


看看

不知道干啥 发表于 2017-8-30 18:47:07

本帖最后由 不知道干啥 于 2017-8-30 18:49 编辑

def newfib(n):
    a,b = 1,2
    while n:
      print(a)
      a,b = b,a+b
      n -=1
      if b%2==0:
            b = int(b/2)

   


newfib(12)

dream_11 发表于 2017-8-30 19:35:15

def newfib(n):
        n1 = 1
        n2 = 2
        n3 = 1
        num =
        if n < 0:
                print('输入错误!')
                return -1
        elif n == 1:
                return num
        else:
                num.append(n2)
                while (n - 2) > 0:
                        n3 = n1 + n2
                        if (n3 % 2) != 0:
                                num.append(n3)
                                n1 = n2
                                n2 = n3
                        else:
                                n3 = n3//2
                                num.append(n3)
                                n1 = n2
                                n2 = n3
                        n -= 1
                return num
number = int (input('请输入一个整数:'))
print (newfib(number))

奔跑的小鸡蛋 发表于 2017-8-31 09:00:09

def nfibs(num):
      nfibs=
      for i in range(num-2):
                nfibs.append(nfibs[-2]+nfibs[-1])
                if nfibs[-1]%2==0:
                        nfibs[-1]=nfibs[-1]/2
      print nfibs

nfibs(12)
1,2,3,,5,4,9,13,11,12,23,35,29

atomplus 发表于 2017-8-31 16:02:40

看看答案对不对

四月之恋 发表于 2017-8-31 17:22:19

来学习

这个胖子有点丑 发表于 2017-8-31 21:00:39

def newfib(n):
    list0 = []
    if n == 1:
      list0.append(1)
      return(list0)
    if n == 2:
      list0 =
      return(list0)
    elif n > 2:
      list0 =
      for i in range(3,n+1):
            num = int(list0 + list0)
            if num % 2 == 0:
                num = int(num/2)
                list0.append(num)
               
            else:
                list0.append(num)
               
      return(list0)
n = int(input('请输入n值:'))
print(newfib(n))

GCZeng 发表于 2017-8-31 23:05:30

def fib(n):
    a,b=1,2
    str="";
    while n:
      str += "%d "%(a);
      a,b=b,a+b
      if b%2 == 0:
            b /= 2
      n-=1
    print(str);

schweinfan 发表于 2017-9-1 17:03:10

# -*- coding: cp936 -*-
def newfib(n):
   if (n == 1):
          return 1
   elif (n == 2):
          return 2
   else:
          if (newfib(n-1) + newfib(n-2)) % 2 == 0:
               return (newfib(n-1) + newfib(n-2))/2
          else:
               return newfib(n-1) + newfib(n-2)

N = int(input('请输入一个正整数:'))
total = newfib(N)
print('新Fibonacci数列的第%d项是%d'%(N,total))

Noregret 发表于 2017-9-1 17:19:27

def newfib(n):
    a, b = 1, 2
    thelist =
    whileb < n :
      
      if (a + b) % 2 == 0:
            a, b =b, int((a + b) / 2)
            thelist.append(b)
      else:
            a, b = b, a + b
            thelist.append(b)
    for each in thelist:
      print(each)

if __name__ =='__main__':
    newfib(100)

保登心爱 发表于 2017-9-1 21:18:11

def f():
    q = list(range(1,3))
    while True:
      yield q
      _next = q + q
      if _next%2 == 0:
            _next //= 2
      q = , _next]

ChrisYang 发表于 2017-9-2 16:37:54

while True:
    def fib(n):
         
      if n>2 :
            f=fib(n-1)+fib(n-2)
            if f%2==0:
               
                return f/2
            else:
                return f
      if n==1:
            return 1
      else:
            return 2
    t=int(input("请输入n的值:"))
    print(int(fib(t)))

小贱剑 发表于 2017-9-2 23:12:33

def newfib(n):
    if n==1:
      return 1
    if n==2:
      return 2
    else:
      if (newfib(n-1)+newfib(n-2))%2:
            return int((newfib(n-1)+newfib(n-2)))
      else:
            return int((newfib(n-1)+newfib(n-2))/2)

伶俐 发表于 2017-9-7 17:38:10

这个比较困难,求答案

lihuayuan 发表于 2017-9-11 19:36:06

不知道啊,真心不知道
页: 1 [2] 3 4
查看完整版本: Python:每日一题87(答题领鱼币)