当前位置: 首页 > 知识库问答 >
问题:

在 Python 中生成斐波那契级数

厉成仁
2023-03-14

我想用Python简单地生成fibonacci序列。但不知怎么的,我看不出正确的系列。例如,如果我输入了3,那么正确的答案应该是:1 1 2 3

下面是我的代码。有人能指出这有什么问题吗:

def genfibonacci(no):
    if no <= 1:
        return no
    else:
        sum = genfibonacci(no - 1) + genfibonacci(no - 2)
    print (sum)
    return(sum)

number = int(input())
genfibonacci(number)

提前谢谢。

共有3个答案

岳彬炳
2023-03-14

这里最简单的斐波纳契数列代表:

#Fibonacci series in Short Code

#initilize the base list
ls2=[0,1]

#user input: How many wants to print
c=int(input('Enter required numbers:'))

#fibonacci Function to add last two elements of list
ls2.extend((ls2[i-1]+ls2[i-2]) for i in range(2,c))

#This will print recuired numbers of list
print(ls2[0:c])

如果您想创建功能,那么:

#Fibonacci series in Short Code

#initilize the base list
ls2=[0,1]
#user input: How many wants to print
c=int(input('Enter required numbers:'))

#fibonacci Function to add last two elements of list
def fibonacci(c):    

    ls2.extend((ls2[i-1]+ls2[i-2]) for i in range(2,c))    
    #This will print required numbers of list
    print(ls2[0:c])

fibonacci(c)

茅昀
2023-03-14

在python中有很多方法可以计算斐波那契数列..

def fib(n):
 a,b = 1,1
 for i in range(n-1):
  a,b = b,a+b
 return a
print fib(5)
def fibR(n):
 if n==1 or n==2:
  return 1
 return fib(n-1)+fib(n-2)
print fibR(5)
a,b = 0,1
def fibI():
 global a,b
 while True:
  a,b = b, a+b
  yield a
f=fibI()
f.next()
f.next()
f.next()
f.next()
print f.next()
def memoize(fn, arg):
 memo = {}
 if arg not in memo:
  memo[arg] = fn(arg)
  return memo[arg]
fibm = memoize(fib,5)
print fibm
class Memoize:
 def __init__(self, fn):
  self.fn = fn
  self.memo = {}
 def __call__(self, arg):
  if arg not in self.memo:
   self.memo[arg] = self.fn(arg)
   return self.memo[arg]

@Memoize
def fib(n):
 a,b = 1,1
 for i in range(n-1):
  a,b = b,a+b
 return a
print fib(5)
姜奇
2023-03-14

部分问题是在计算时打印(除了if<code>no</code>

def genfibonacci(no):
    if no <= 1:
        sum = no
    else:
        sum = genfibonacci(no-1) + genfibonacci(no-2)
    return sum

>>> [genfibonacci(i) for i in range(4)]
[0, 1, 1, 2]
>>> [genfibonacci(i) for i in range(5)]
[0, 1, 1, 2, 3]

此范围从 0 开始,因此您可以根据需要将其删除。

因为4的< code>genfibonacci将调用32和2,而32和2又将调用2和1,所以对于同一个数字,您的print语句将出现不止一次。而对于< code>no则完全不是

 类似资料:
  • Python3 实例 斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。 Python 实现斐波那契数列代码如下: 实例(Python 3.0+)# -*- coding: UTF-8 -*- # Filename : test.py # author by : www.runoob.com

  • 问题内容: 关门了 。这个问题需要更加集中。它当前不接受答案。 想要改善这个问题吗? 更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 改善这个问题 如何在SQL中生成斐波那契数列! 我需要生成斐波那契数列0 1 1 2 3 5 8 13 21 … N 我使用C代码轻松做到了这一点,我需要使用Sql做到这一点! 问题答案: 试试这个 ! 0 1 1 2 3 5 8 13 21 34 5

  • 主要内容:递归生成斐波那契数列,总结公元 1202 年,意大利数学家莱昂纳多·斐波那契提出了具备以下特征的数列: 前两个数的值分别为 0 、1 或者 1、1; 从第 3 个数字开始,它的值是前两个数字的和; 为了纪念他,人们将满足以上两个特征的数列称为斐波那契数列。 如下就是一个斐波那契数列: 1 1 2 3 5 8 13 21 34...... 下面的动画展示了斐波那契数列的生成过程: 图 1 斐波那契数列 很多编程题目要求我们输

  • 题目链接 NowCoder 题目描述 求斐波那契数列的第 n 项,n <= 39。 <!--1}\end{array}\right." class="mathjax-pic"/> --> 解题思路 如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。 递归是将一个问题划分

  • 问题内容: 我最初对程序进行了错误编码。我没有为程序返回范围内的斐波那契数(即startNumber 1,endNumber 20应该仅= 1和20之间的那些数字),而是为程序编写了显示范围内的所有斐波那契数(即startNumber 1,endNumber 20)显示=前20个斐波那契数字)。我以为我有一个确定的代码。我也看不出为什么会这样。 有人在我的第二部分中指出了这一点(由于重复而被关闭-

  • 本文向大家介绍JavaScript中的斐波那契数列,包括了JavaScript中的斐波那契数列的使用技巧和注意事项,需要的朋友参考一下 斐波那契数是这样的数,使得该序列中前两个后的每个数字都是前两个的和。该系列从1、1开始。示例- 我们可以编写一个程序来生成nth,如下所示: 您可以使用以下方式进行测试: 这将给出输出- 让我们看看这些函数调用实际上是如何发生的- 当我们调用f(5)时,我们将调用

  • 问题内容: 以下问答涵盖了几种在Swift中生成斐波那契数的方法,但已经过时了(Swift 1.2?) 问题: 如何使用现代Swift(Swift> = 3)整齐地生成斐波那契数?最好是避免显式递归的方法。 问题答案: Swift 3.0的替代方法是使用助手功能 从Express for动态循环迅速变化: 注意,为了以包括所产生的序列中的零,只要更换的初始值由: 这使得“人为”检查 多余的。根本原

  • 一、题目 写一个函数,输入n,求斐波那契数列的第n项值。 斐波那契数列的定义如下: 二、解题思路 按照上述递推式,可以使用循环或递归的方式获取第n项式。 三、解题代码 public class Test { /** * 写一个函数,输入n,求斐波那契(Fibonacci) 数列的第n项 * @param n Fibonacci数的项数 * @ret