如何用python或ruby对Fibonacci级数进行计算?(无递归)

2024-05-04 12:39:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Python和Ruby语言中找到Fibonacci系列的第n项,但无法得到预期的输出。谁能帮帮我吗? 我的问题是,他们会给我第一个和第二个学期和第n个学期,我必须找到第n个学期。在

我的Python程序:

num1=int(raw_input())
num2=int(raw_input())
num=int(raw_input())
for i in range(3,num+1):
    sum=num1+num2
    num1=num2
    num2=sum
print sum

我的Ruby程序:

^{pr2}$

样本输入

^{3}$

样本输出

5

Tags: 程序语言forinputrawnumfibonacciint
3条回答

红宝石

alpha = (1 + Math.sqrt(5)) / 2
beta  = (1 - Math.sqrt(5)) / 2
((alpha ** n - beta ** n) / Math.sqrt(5)).round

Ruby版本很接近:

num1=gets.to_i
num2=gets.to_i
num=gets.to_i
for i in 3..num     # no :
    sum=num1+num2
    num1=num2
    num2=sum
end                 # explicit end
print sum

使用Python。在

斐波那契数列有两个连续的数字num1和num2。我们把num2i的位置称为,你想在位置i+n处找到序列的项(在你的例子中n是num)。按照您的代码,这是有效的:

num1 = int(raw_input())
num2 = int(raw_input())
num = int(raw_input())
for i in range(1, num+1):
    sum = num1 + num2
    num1 = num2
    num2 = sum
print sum

输入

^{pr2}$

输出

8

如果您想简单地找到序列的第n项,可以使用此函数:

def f(n):
    num1, num2 = 0, 1
    for _ in range(1, n+1):
        num1, num2 = num2, num1+num2
    return num2

相关问题 更多 >