簡體   English   中英

如何在 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

在紅寶石中

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM