Python3.2中的斐波那契数列
我真的需要你的帮助。我知道这个问题已经被问过无数次了,但我还是找不到答案...
我需要在一个叫做 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 个回答
在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们通常会把它们转换成一种统一的格式。
比如说,如果你有一个用户输入的字符串,里面可能包含一些数字和字母。为了方便计算,我们可能需要把这些字符串转换成数字。这就像把一块拼图放到正确的位置,让整个画面看起来完整。
在这个过程中,我们可能会遇到一些问题,比如输入的格式不对,或者数据类型不匹配。这就需要我们在代码中添加一些检查,确保数据在转换之前是正确的。这样可以避免程序在运行时出现错误,就像在做一道数学题之前,先确认一下题目是否看懂了。
总之,处理数据的过程就像是在整理一个杂乱的房间,我们需要把不同的东西分类、整理,最后才能找到我们需要的东西。
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) 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]
在编程中,很多时候我们需要让程序根据某些条件来做不同的事情。这就像是生活中的选择题,你根据不同的情况选择不同的答案。
比如说,如果你今天下雨了,你可能会选择带伞;如果天气晴朗,你就可能选择不带伞。这种根据条件做出不同选择的方式,在编程里叫做“条件语句”。
条件语句可以帮助程序判断当前的情况,然后决定接下来要执行什么操作。这样,程序就能更智能地处理不同的情况。
在代码中,条件语句通常是用“如果(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