如何在python或ruby中执行Fibonacci系列的计算?(无递归)

时间:2015-09-29 06:16:48

标签: python ruby fibonacci

我试图在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程序:

num1=gets.to_i
num2=gets.to_i
num=gets.to_i
for i in 3..num:
    sum=num1+num2
    num1=num2
    num2=sum
print sum

示例输入

0 1 5

示例输出

5

3 个答案:

答案 0 :(得分:4)

在Ruby中

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

答案 1 :(得分:0)

使用Python。

您有两个连续数字的斐波那契数字num1和num2。让我们调用num2 i的位置。您希望在位置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

输入

0 1 5

输出

8

如果您只想找到序列的第n个术语,可以使用此函数:

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

答案 2 :(得分:0)

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