【问题标题】:Fibonacci numbers integer taken [closed]斐波那契数整数取[关闭]
【发布时间】:2014-12-01 20:31:57
【问题描述】:

我有 2 个关于斐波那契数的问题。

1) 作为斐波那契基函数参数的整数个数? (土耳其语:Argüman olarak alınan onluk tabanda ki sayıyı Fibonacci tabanına dönüştüren işlev?)

2) 斐波那契函数中给出的数字转换整数基数? (土耳其语:Fibonacci tabanında verilmiş sayıyı onluk tabana dönüştüren işlev?)

a, b = 0, 1
print (a)
print (b)
i = 2
while i<=50:
    a,b = b, a+b
    print (b)
    i+=1

我可以写,但我想要 f(10) 或 f(5) 之类的东西

对不起,我的英语不太好。谢谢。

【问题讨论】:

  • 您的问题是什么,更具体地说,出了什么问题?
  • 他猜测他想要一个直接的公式来计算斐波那契数,而不是通过循环。
  • @Iplodman 它最多可以打印 50 个斐波那契数字。我只想要一个,例如 f(6)。
  • @Phylogenesis 是的,类似的东西。我只想要一个斐波那契数
  • 您需要使用Binet's formula 来计算序列的各个成员。

标签: python integer fibonacci


【解决方案1】:

只需将其全部移至函数并处理特殊情况。

def fib(n):
    #TODO: handle invalid case(negative or non-int) and return

    if(n == 0):
        print(0)
        return

    if(n == 1):
        print(1)
        return

    a, b = 0, 1
    i = 2
    #this will go up to the n-th number
    while i<=n:
        a,b = b, a+b
        i+=1

    print (b)

那么你可以这样做:

fib(1)
fib(0)
fib(6)
fib(33)

你会得到:

1
0
8
3524578

【讨论】:

  • 一个更简单的解决方案是可能的,如果你从函数中删除print,扔掉ireturn a。 (我的版本有 6 行)
  • 我写它是为了满足 OP 的需求。 OP 打印并跟踪i,所以我决定这样做。
  • 我认为这些特殊情况下的代码更难理解。
猜你喜欢
  • 1970-01-01
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
  • 2015-06-05
  • 2014-05-23
  • 2014-05-03
  • 1970-01-01
相关资源
最近更新 更多