你知道嗎,? 同學(xué)們好,,你知道什么是迭代嗎?來看下面這樣一道題目: 甲乙兩位同學(xué)為增強(qiáng)體質(zhì),,各自制定了自己的跳繩訓(xùn)練計(jì)劃:甲同學(xué)決定第一天跳繩100個(gè),,第二天開始每天增加5個(gè),問30天總共能跳多少個(gè),?乙同學(xué)決定第一天也跳繩100個(gè),,以后每隔一天增加10個(gè),問30天總共能跳多少個(gè),? 這需要一種新的算法——迭代算法,。 讓我們一起來開啟本節(jié)《用迭代算法探究數(shù)據(jù)變化規(guī)律》的Python之旅吧! 流程圖 甲同學(xué): 乙同學(xué): 程序代碼 a=100 b=100 x=a y=b n=30 for i in range(2,n+1): a=a+5 if i%2==1: b=b+10 x=x+a y=y+b print('甲同學(xué)30天共跳繩',x,'個(gè)') print('乙同學(xué)30天共跳繩',y,'個(gè)') 小結(jié) 迭代算法是用計(jì)算機(jī)解決問題的一種基本方法,。 (1)確定迭代變量——即誰在變,? (2)建立迭代關(guān)系式——即怎么變?舊值和新值之間的關(guān)系式 (3)控制迭代過程——即循環(huán)多少次,? 拓展練習(xí) 傳說,印度的舍罕王打算獎(jiǎng)賞國(guó)際象棋的發(fā)明人宰相西薩·班·達(dá)依爾,。國(guó)王問他想要什么,,他對(duì)國(guó)王說:“陛下,請(qǐng)您在這張棋盤的第1個(gè)格中,,賞給我1粒麥子,,在第2個(gè)小格子里給2粒,第3個(gè)小格里給4粒,,以后每一小格都比前一小格多1倍,。請(qǐng)您如此這般擺滿棋盤上所有64格的麥粒,都賞給我吧!”國(guó)王覺得宰相的這個(gè)要求太容易滿足了,,就下令賞給他這些麥粒,。當(dāng)人們把一袋袋麥粒搬來開始如數(shù)擺放時(shí),國(guó)王這才發(fā)現(xiàn):就是把全印度的麥粒都拿來,,也滿足不了那位宰相的要求,。 那么,到底需要多少麥粒呢? 請(qǐng)同學(xué)們嘗試使用迭代算法: 1.編寫程序,,求任意前n個(gè)棋盤格的麥??倲?shù); 2.編寫程序,,計(jì)算前n格麥??倲?shù)的質(zhì)量。 假如一粒麥粒大約0.01克,,棋盤麥粒問題中前n格共多少千克或多少噸麥粒呢,? 小貼士: 要算出總數(shù),,先要知道每個(gè)格子中的麥粒數(shù)。故事中,,有一句很關(guān)鍵的話“每一小格都比前一小格多一倍”,。也就是說,第1小格1粒麥子,,用20表示,;第2小格2粒麥子,就用21表示,;第3小格4粒麥子,,就用22表示。依次類推,,第64小格中的麥粒數(shù)就是263,,總麥粒數(shù)自然就是20+21+22+23+……+263。 1.導(dǎo)入數(shù)學(xué)函數(shù)模塊:from math import * 2.求乘方函數(shù):pow(x,y):計(jì)算x的y次方 3.迭代關(guān)系: 迭代關(guān)系1:當(dāng)前格的麥粒數(shù)是前一個(gè)格的2倍,。 迭代關(guān)系2:前n格的麥??倲?shù)=前n-1格麥粒總數(shù)+第n格的麥粒數(shù),。 |
|