如何计算python或ruby中的斐波那契数列?(无递归)

How to perform calculations for Fibonacci series in python or ruby?(without recursion)

我试图在 Python 和 Ruby 两种语言中找到斐波那契数列的第 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

在Ruby

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

使用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

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