溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python/R語言如何分別實(shí)現(xiàn)斐波那契數(shù)列

發(fā)布時(shí)間:2022-03-24 11:02:46 來源:億速云 閱讀:318 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了“Python/R語言如何分別實(shí)現(xiàn)斐波那契數(shù)列”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Python/R語言如何分別實(shí)現(xiàn)斐波那契數(shù)列”這篇文章吧。

    1、年齡計(jì)算

    有 5 個(gè)人坐在一起,問第五個(gè)?人多少歲?他說比第 4 個(gè)人大 2 歲。問第 4 個(gè) 人歲數(shù),他說比第 3 個(gè)人大 2 歲。問第三個(gè)人,又說比第 2 人大兩歲。問第 2 個(gè)人,說比第一個(gè)人大兩歲。最后問第一個(gè)人,他說是 10 歲。請問第五個(gè)人多 大?

    這個(gè)問題簡化之后便是求一個(gè)等比數(shù)列的第 5 項(xiàng)是多少!

    1.1 圖解問題

    Python/R語言如何分別實(shí)現(xiàn)斐波那契數(shù)列

    根據(jù)數(shù)學(xué)思維即可得出該數(shù)列為 1 組等差數(shù)列:

    an=2(n−1)+10

    既然問題已經(jīng)提取到這兒了,那接下來就只剩如何用代碼實(shí)現(xiàn)了:

    1.2 代碼解決

    1.2.1 Python實(shí)現(xiàn)代碼

    def age():
        #互動(dòng)界面——輸入查詢的第幾個(gè)
        n = int(input("請問你需要第幾個(gè)人年齡:"))
        no_1 = 10
        if n<0:
            print("請輸入大于0的數(shù)值?。。?quot;)
        else:
            #主要計(jì)算數(shù)列
            no_n = (n-1)*2+no_1
        return n,no_n
    print("第{}個(gè)人的年齡是:{}歲。".format(*age()))

    Python/R語言如何分別實(shí)現(xiàn)斐波那契數(shù)列

    1.2.1 R語言實(shí)現(xiàn)代碼

    caixiang <- function(){
      one_age <-as.integer(readline('請輸入第一個(gè)人的年齡:'))
      n <- as.integer(readline("請輸入查詢的第幾個(gè)人:"))
      n_age <<- one_age + 2*(n-1)
      return(n_age)
    }
    test_1 <- function(){
      caixiang()
      cat("查詢的年齡為:",n_age) 
      }
    test_1()

    Python/R語言如何分別實(shí)現(xiàn)斐波那契數(shù)列

    1.3 實(shí)驗(yàn)小結(jié)

    這個(gè)實(shí)驗(yàn)的代碼部分并不難,僅需要輸入數(shù)學(xué)公式即可。

    代碼部分均使用函數(shù)的形式進(jìn)行包裝方便理解;函數(shù)內(nèi)部采用互動(dòng)的方式,便于拓展使用。

    2、斐波那契數(shù)列

    斐波那契數(shù)列(Fibonacci sequence),又稱黃金分割數(shù)列,因數(shù)學(xué)家萊昂納多&middot;斐波那契(Leonardo Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數(shù)列”,指的是這樣一個(gè)數(shù)列:1、1、2、3、5、8、13、21、34、&hellip;&hellip;

    在數(shù)學(xué)上,斐波那契數(shù)列以如下被以遞推的方法定義:

    Python/R語言如何分別實(shí)現(xiàn)斐波那契數(shù)列

    現(xiàn)代物理、準(zhǔn)晶體結(jié)構(gòu)、化學(xué)等領(lǐng)域,斐波納契數(shù)列都有直接的應(yīng)用。在數(shù)學(xué)中更是應(yīng)用廣泛,各種推理推論在這就不展開了,畢竟還是以代碼生成斐波那契數(shù)列為主。

    Python/R語言如何分別實(shí)現(xiàn)斐波那契數(shù)列

    2.1 圖解問題

    Python/R語言如何分別實(shí)現(xiàn)斐波那契數(shù)列

    根據(jù)數(shù)列的通項(xiàng)式可得出如圖的加法;顯然這是種向下的循環(huán)加法。則定以for循環(huán)對該數(shù)列每一個(gè)值的單獨(dú)輸出。

    2.2 代碼實(shí)現(xiàn)

    2.2.1 Python代碼實(shí)現(xiàn)

    def fib(n):
        a,b = 1,1
        # 循環(huán)打印
        for i in range(n):
            print(a,end = " ")
            temp = a
            a = b 
            b = temp + b
    
    num = int(input("請輸入需要打印的斐波那數(shù)列的數(shù)據(jù)個(gè)數(shù)(從 1 開始):"))
    fib(num)

    Python/R語言如何分別實(shí)現(xiàn)斐波那契數(shù)列

    2.2.2 R語言代碼實(shí)現(xiàn)

    fib <- function(n){
      n <-  as.integer(
        readline("請輸入需要打印的斐波那數(shù)列的數(shù)據(jù)個(gè)數(shù)(從 1 開始):"))
      a = b = 1
      for (i in 1:n) {
        print(a,end = " ")
        temp <- a
        a <- b
        b <- a + temp
      }
    }
    test_2 <- function(){
      cat("斐波那契數(shù)列為:")
      fib(n) 
    }
    test_2()

    Python/R語言如何分別實(shí)現(xiàn)斐波那契數(shù)列

    2.3 實(shí)驗(yàn)小結(jié)

    在圖解之后,這個(gè)數(shù)列的輸出已經(jīng)不再困難,均是使用 for 循環(huán)加上 temp 指針的方式。這里不展開介紹指針的移動(dòng)規(guī)則,如有需要留言就可。然而在每次循環(huán)時(shí)將得出的值進(jìn)行輸出就能不被覆蓋。

    代碼部分均使用函數(shù)的形式進(jìn)行包裝方便理解;函數(shù)內(nèi)部采用互動(dòng)的方式,便于拓展使用。

    以上是“Python/R語言如何分別實(shí)現(xiàn)斐波那契數(shù)列”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI