Python/R語(yǔ)言分別實(shí)現(xiàn)斐波那契數(shù)列的示例詳解
前言
此專欄為python與R語(yǔ)言對(duì)比學(xué)習(xí)的文章;以通俗易懂的小實(shí)驗(yàn),帶領(lǐng)大家深入淺出的理解兩種語(yǔ)言的基本語(yǔ)法,并用以實(shí)際場(chǎng)景!感謝大家的關(guān)注,希望對(duì)大家有所幫助。
“博觀而約取,厚積而薄發(fā)!”謹(jǐn)以此言,望諸君共勉
本文將前兩個(gè)小實(shí)驗(yàn)整理拼湊再了一起 ;分別是“年齡計(jì)算”、“斐波那契數(shù)列”。具體的項(xiàng)目介紹見下文。
1、年齡計(jì)算
有 5 個(gè)人坐在一起,問第五個(gè)?人多少歲?他說比第 4 個(gè)人大 2 歲。問第 4 個(gè) 人歲數(shù),他說比第 3 個(gè)人大 2 歲。問第三個(gè)人,又說比第 2 人大兩歲。問第 2 個(gè)人,說比第一個(gè)人大兩歲。最后問第一個(gè)人,他說是 10 歲。請(qǐng)問第五個(gè)人多 大?
這個(gè)問題簡(jiǎn)化之后便是求一個(gè)等比數(shù)列的第 5 項(xiàng)是多少!
1.1 圖解問題

根據(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("請(qǐng)問你需要第幾個(gè)人年齡:"))
no_1 = 10
if n<0:
print("請(qǐng)輸入大于0的數(shù)值?。?!")
else:
#主要計(jì)算數(shù)列
no_n = (n-1)*2+no_1
return n,no_n
print("第{}個(gè)人的年齡是:{}歲。".format(*age()))

1.2.1 R語(yǔ)言實(shí)現(xiàn)代碼
caixiang <- function(){
one_age <-as.integer(readline('請(qǐng)輸入第一個(gè)人的年齡:'))
n <- as.integer(readline("請(qǐng)輸入查詢的第幾個(gè)人:"))
n_age <<- one_age + 2*(n-1)
return(n_age)
}
test_1 <- function(){
caixiang()
cat("查詢的年齡為:",n_age)
}
test_1()

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é)家萊昂納多·斐波那契(Leonardo Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數(shù)列”,指的是這樣一個(gè)數(shù)列:1、1、2、3、5、8、13、21、34、……
在數(shù)學(xué)上,斐波那契數(shù)列以如下被以遞推的方法定義:

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

2.1 圖解問題

根據(jù)數(shù)列的通項(xiàng)式可得出如圖的加法;顯然這是種向下的循環(huán)加法。則定以for循環(huán)對(duì)該數(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("請(qǐng)輸入需要打印的斐波那數(shù)列的數(shù)據(jù)個(gè)數(shù)(從 1 開始):"))
fib(num)

2.2.2 R語(yǔ)言代碼實(shí)現(xiàn)
fib <- function(n){
n <- as.integer(
readline("請(qǐng)輸入需要打印的斐波那數(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()

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)的方式,便于拓展使用。
總結(jié)
本文中Python與R語(yǔ)言語(yǔ)法小結(jié)
獲取鍵盤輸入值——input()函數(shù) VS readline()函數(shù)
到此這篇關(guān)于Python/R語(yǔ)言分別實(shí)現(xiàn)斐波那契數(shù)列的示例詳解的文章就介紹到這了,更多相關(guān)Python/R斐波那契數(shù)列內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中實(shí)現(xiàn)對(duì)list做減法操作介紹
這篇文章主要介紹了Python中實(shí)現(xiàn)對(duì)list做減法操作介紹,需要的朋友可以參考下2015-01-01
Python中安全地使用多進(jìn)程和多線程進(jìn)行數(shù)據(jù)共享
在并發(fā)編程中,有時(shí)多個(gè)線程或進(jìn)程需要訪問共享的數(shù)據(jù),因此我們需要一些機(jī)制來確保數(shù)據(jù)的安全訪問,本文將從多線程和多進(jìn)程兩個(gè)角度探討Python如何安全地實(shí)現(xiàn)數(shù)據(jù)共享2024-12-12
解決Pymongo insert時(shí)會(huì)自動(dòng)添加_id的問題
這篇文章主要介紹了解決Pymongo insert時(shí)會(huì)自動(dòng)添加_id的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12
基于PyQt5制作Excel文件數(shù)據(jù)去重小工具
這篇文章主要介紹了如何利用PyQt5模塊制作一個(gè)Excel文件數(shù)據(jù)去重小工具,可以將單個(gè)或者多個(gè)Excel文件數(shù)據(jù)進(jìn)行去重操作,去重的列可以通過自定義制定,需要的可以參考一下2022-04-04
使用wxPython和pandas模塊生成Excel文件的代碼實(shí)現(xiàn)
在Python編程中,有時(shí)我們需要根據(jù)特定的數(shù)據(jù)生成Excel文件,本文將介紹如何使用wxPython和pandas模塊來實(shí)現(xiàn)這個(gè)目標(biāo),文中通過代碼示例給大家講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-05-05
Python使用Librosa進(jìn)行音頻處理操作詳解
pycharm 使用tab跳出正在編輯的括號(hào)(){}{}等問題

