找規(guī)律是常見的數(shù)學(xué)題型。目的是讓學(xué)生發(fā)現(xiàn)圖形和數(shù)字的排列規(guī)律,從而理解并掌握找規(guī)律的方法,培養(yǎng)學(xué)生的觀察及推理能力。例如數(shù)列1,2,4,7,11,16,(X),(Y)……其中X和Y的值分別為多少呢?數(shù)列中兩數(shù)之間的差成一個(gè)等差數(shù)列關(guān)系,相差為:1,2,3,4,5,6……因此X的值為22,Y的值為29。
今天我們用Python解決一道奧數(shù)找規(guī)律問題:現(xiàn)有一組數(shù)列為1,2,5,13,34,(z)。請(qǐng)問z的值為多少呢?
這個(gè)數(shù)列的規(guī)律你發(fā)現(xiàn)了嗎?第N個(gè)數(shù)字等于它前一個(gè)數(shù)字加前面所有數(shù)字的和,例如5=2+2+1,13=5+5+2+1,34=13+13+5+2+1。那么如何用Python表示出這個(gè)數(shù)列呢?并求出需要的答案呢?
首先設(shè)變量a=1表示第一個(gè)數(shù)字。設(shè)置兩個(gè)循環(huán)變量i和num用來統(tǒng)計(jì)元素是否達(dá)到規(guī)定的個(gè)數(shù),這種變量也稱為計(jì)數(shù)器,并且定義列表arr用于存放輸出的結(jié)果。
控制while循環(huán)設(shè)置計(jì)數(shù)器和產(chǎn)生元素的個(gè)數(shù),在每次循環(huán)結(jié)束前加1,在循環(huán)過程中,數(shù)值不斷累加,計(jì)數(shù)器也加1,第i次循環(huán)加上一次的結(jié)果,計(jì)算出結(jié)果后將計(jì)算出的新元素添加到arr列表中,并且把元素i清零,這樣下次循環(huán)又是從第一個(gè)數(shù)字開始累加,依次循環(huán),直到全部結(jié)束為止,每循環(huán)一次,打印顯示列表值,用于觀察(圖1)。
通過分析,我們可以用Python計(jì)算出有規(guī)律的數(shù)列,并且有序?qū)⒚看蔚牧斜碇械闹递敵?,那么現(xiàn)在增加難度:如果我們想求出該數(shù)列中第100個(gè)數(shù)的值是多少?前100個(gè)數(shù)值之和為多少呢?大家趕緊動(dòng)手編寫代碼吧。