我有一个家庭作业,我很难完成。我试图写一个程序,输出斐波那契数列的第n个数字。以下是我目前掌握的情况:
def fib():
n = int(input("Please Enter a number: "))
if n == 1:
return(1)
elif n == 0:
return(0)
else:
return (n-1) + (n-2)
mylist = range[0:n]
print(mylist)
我想我可以使用单独的函数,但我不知道如何传递计算斐波那契序列的参数。然后下一步将是打印出该数字之前的数字序列。
Tags:
既然你想打印到第
n
个号码:对于python2.7,将
input
更改为raw_input
。非递归解
发电机解决方案:
请注意,生成器解决方案优于非递归解决方案(如果递归解决方案未应用记忆,则非递归解决方案优于递归解决方案)
再来一次,用记忆递归:
这一次每个斐波纳契数计算精确一次,并存储。因此,这个解决方案将优于所有其他方案。然而,decorator实现只是快速而肮脏的,不要让它投入生产。(有关python装饰器的详细信息,请参见this amazing questionon-SO:)
因此,定义了
fib
之后,程序会变得类似(抱歉,只是循环很无聊,这里有一些更酷的python内容:list comprehensions)这会将所有数字打印成一行,用空格隔开。如果您希望每一个都在自己的行上-用
"\n"
替换" "
请注意,在你的电话里
这个方法只给你序列中的第n个数字。它不会打印序列。
你需要
return fib(n-1) + fib(n-2)
相关问题 更多 >
编程相关推荐