如何计算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
我试图在 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