Python3.2中的斐波那契数列

-5 投票
3 回答
2875 浏览
提问于 2025-04-18 06:59

我真的需要你的帮助。我知道这个问题已经被问过无数次了,但我还是找不到答案...

我需要在一个叫做 bla-bla.py 的文件里用递归的方式编写斐波那契数列,这就是我目前写的代码:

print("Unendlicher Fibonacci-Generator Rekursiv")
def fib(n):

  if n == 0:
        return 0
  elif n == 1:
        return 1
  else:
        return fib(n-1) + fib(n-2)

for n in fib(n):
  print (str(n))

但是我总是遇到一个名字错误,提示“name 'n' is not defined”,这让我快要疯了... 我就是搞不懂在Python里怎么“打印”一个变量的值!请帮帮我!

我试着用“in”来解决这个名字错误。我之前编写过一个斐波那契生成器,它用“for...in”运行得很好。我明白我需要某种迭代才能让它工作。所以这是一个运行得不错的版本:

print("Unendlicher Fibonacci-Generator")
def fibonacci():
  a, b = 0, 1   #a=0, b=1
  while True:
    yield a
    a, b = b, a + b
f = fibonacci()

counter = 0
for x in f:
  print ("fib(" + str(counter) +") = " +str(x))
  counter +=1
  if (counter > 25): break

有人能告诉我递归函数的正确代码是什么吗?

3 个回答

-1

在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们通常会把它们转换成一种统一的格式。

比如说,如果你有一个用户输入的字符串,里面可能包含一些数字和字母。为了方便计算,我们可能需要把这些字符串转换成数字。这就像把一块拼图放到正确的位置,让整个画面看起来完整。

在这个过程中,我们可能会遇到一些问题,比如输入的格式不对,或者数据类型不匹配。这就需要我们在代码中添加一些检查,确保数据在转换之前是正确的。这样可以避免程序在运行时出现错误,就像在做一道数学题之前,先确认一下题目是否看懂了。

总之,处理数据的过程就像是在整理一个杂乱的房间,我们需要把不同的东西分类、整理,最后才能找到我们需要的东西。

print("Unendlicher Fibonacci-Generator Rekursiv")
def fib(n):

  if n == 0:
        return 0
  elif n == 1:
        return 1
  else:
        return fib(n-1) + fib(n-2)


print fib(12)

####### or a number which given by user
a=input("enter a number : ")
print("fibonacci(",a,") = ",fib(a))
1

你的代码有几个问题。

1) fib(n) - 这里的 n 没有定义。你应该传入一个具体的数字,比如:fib(5)

2) in - 你不能这样用 in int。只需要像下面这样打印函数的结果:

print(fib(12))

[OUTPUT]
144

这里有一种非递归的方法来获取一系列的值:

def fib(n,):
    l = [0, 1]
    for i in range(n-2):
        l.append(l[-1]+l[-2])
    return l

>>> print fib(10)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
-2

在编程中,很多时候我们需要让程序根据某些条件来做不同的事情。这就像是生活中的选择题,你根据不同的情况选择不同的答案。

比如说,如果你今天下雨了,你可能会选择带伞;如果天气晴朗,你就可能选择不带伞。这种根据条件做出不同选择的方式,在编程里叫做“条件语句”。

条件语句可以帮助程序判断当前的情况,然后决定接下来要执行什么操作。这样,程序就能更智能地处理不同的情况。

在代码中,条件语句通常是用“如果(if)”来开始的,后面跟着一个条件,比如“如果下雨”。然后再写出在这个条件成立时要执行的代码,比如“带伞”。

总之,条件语句就像是给程序设置了一些规则,让它能根据不同的情况做出不同的反应。

print("Unendlicher Fibonacci-Generator Rekursiv")
def fib(n):

  if n == 0:
        return 0
  elif n == 1:
        return 1
  else:
        return fib(n-1) + fib(n-2)


row=[fib(n) for n in range(1,25)]
print row

撰写回答