亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        趣味數(shù)學(xué)

        2021-07-23 17:36:18陳新龍
        電腦報(bào) 2021年23期

        陳新龍

        楊輝三角是二項(xiàng)式系數(shù)在三角形中的一種幾何排列,在南宋數(shù)學(xué)家楊輝在1261年所著的《詳解九章算法》一書(shū)中出現(xiàn),楊輝三角的出現(xiàn)是數(shù)學(xué)史上一個(gè)偉大的成就,它把二項(xiàng)式系數(shù)圖形化,把組合數(shù)內(nèi)在的一些代數(shù)性質(zhì)直觀地從圖形中體現(xiàn)出來(lái),形成一個(gè)無(wú)限對(duì)稱(chēng)的數(shù)字金字塔,這是一種離散型的數(shù)與形的結(jié)合(如圖1)。

        1.算法分析

        那么今天就和大家一起探討一下如何用Scratch和Python繪制出楊輝三角,別看楊輝三角這么復(fù)雜,但是只要我們分析出其中的規(guī)律自然就可以克服困難(如圖2)。

        通過(guò)觀察我們發(fā)現(xiàn)楊輝三角的兩個(gè)腰上的數(shù)都是1,如圖2所示相加關(guān)系用箭頭標(biāo)識(shí),中間位置的數(shù)都是它頂上兩個(gè)數(shù)之和。因此楊輝三角的每行首尾數(shù)都為1,中間每個(gè)數(shù)等于它上方兩數(shù)之和,比如第二行的數(shù)為【1,1】,第三行【1,2,1】其中的數(shù)字2是第二行的數(shù)1+1之和(如圖3)。

        且每行數(shù)字左右對(duì)稱(chēng),由1逐漸變大,第n行的數(shù)字有n項(xiàng),我們還可以總結(jié)出一個(gè)規(guī)律(a+b)nn的展開(kāi)式中的各項(xiàng)系數(shù)依次對(duì)應(yīng)楊輝三角的第(n+1)行中的每一項(xiàng)。

        2.在Scratch中計(jì)算

        我們可以利用上一行的數(shù)據(jù)計(jì)算出楊輝三角的下一行數(shù)據(jù),因此可以定義兩個(gè)列表,其中a列表存儲(chǔ)上一行的數(shù)據(jù),b列表存儲(chǔ)a列表各項(xiàng)兩兩相加的結(jié)果,這樣就獲得了下一行的除首尾兩個(gè)1以外的數(shù)據(jù),將b列表首尾各加1個(gè)1之后存入新的a列表獲得下一行的全部數(shù)據(jù)(如圖4)。

        初始的情況下我們給列表a添加了兩個(gè)數(shù)字【1,1】,代表?xiàng)钶x三角的第二層;1+1=2獲得列表b;給b的首位和末位加上1,就能獲得第三層的數(shù)據(jù)【1,2,1】,讓程序把a(bǔ)列表的數(shù)據(jù)清空,將剛剛獲得的b列表內(nèi)容在首位和末位加1存儲(chǔ)到a里面,如此一層一層地循環(huán)到需要的層數(shù)后輸出就可以了(如圖5)。

        3.在Scratch中繪制

        我們通過(guò)找規(guī)律,成功將圖形轉(zhuǎn)化為了數(shù)據(jù),解決了數(shù)據(jù)來(lái)源問(wèn)題。由于Scratch不能像Python或者c語(yǔ)言那樣將列表中的數(shù)據(jù)直接顯示到舞臺(tái)上,所以我們得想個(gè)辦法讓數(shù)字角色根據(jù)已知數(shù)據(jù)排列成我們需要的楊輝三角。

        從角色庫(kù)中添加數(shù)字造型0-9,全部數(shù)字造型在一個(gè)角色中?,F(xiàn)在我們只需要根據(jù)不同的數(shù)字切換出不同的造型,利用畫(huà)筆里的圖章將數(shù)繪制在舞臺(tái)上。還需要讓這些數(shù)字根據(jù)需要排列在合適的位置上(如圖6)。

        第一行位置就定在舞臺(tái)中線正上方,下一行需要根據(jù)實(shí)際情況去測(cè)試和調(diào)整。經(jīng)過(guò)測(cè)試找到了一個(gè)合適的間距,為了方便調(diào)整我使用了公式:【x:0-20(行數(shù)-1),Y:Y坐標(biāo)-30】,行間距為30,數(shù)字之間的間距為30。

        這個(gè)時(shí)候不知道你有沒(méi)有注意到一個(gè)問(wèn)題,我們?nèi)绻敵鰞晌粩?shù)甚至三位數(shù)該怎么辦呢?比如要輸出15,但我們的角色只有0-9,這個(gè)時(shí)候我們可以使用拆分的方法,將多位數(shù)獨(dú)立拆出來(lái)。1放在前面,移動(dòng)x坐標(biāo)12,5放在后面,結(jié)合起來(lái)就是數(shù)字15了,用一個(gè)循環(huán)嵌套解決了輸出多位數(shù)的煩惱(如圖7)。

        以上把用Scratch繪制楊輝三角所遇到的難題全部解決了,接下來(lái)我們可以按照整體的思路框架搭建主程序,最終可以看到我們運(yùn)行后的結(jié)果了。圖中看到等腰三角形效果,由于到下層數(shù)字越來(lái)越大,占據(jù)的寬度也越來(lái)越大,所以整體會(huì)慢慢向右移動(dòng),后期我們還可以?xún)?yōu)化調(diào)整(如圖8)。

        4.在Python中繪制楊輝三角

        在已經(jīng)分析出算法的情況下,我們?cè)僖黄饋?lái)思考如何用PVthon做出楊輝三角的造型。下面我會(huì)給大家展示兩種不同的做法,普通方法和進(jìn)階方法兩者大家都可以嘗試。

        這個(gè)方法算法與剛才Scratch的算法一致,定義dict temp變量用來(lái)存放楊輝三角中的數(shù)值,首先賦予i變量范圍range(1,11)代表行數(shù),接下來(lái)賦予i變量范圍(0,i)代表每行的個(gè)數(shù),第一行一個(gè),第二行兩個(gè)……每行首尾數(shù)字都是1,中間數(shù)字等于上一行的左右兩個(gè)數(shù)字之和,即第n+l行的第i個(gè)數(shù)等于第n行的第i-1個(gè)數(shù)和第i個(gè)數(shù)之和。即dict temp(i-1,1)+dict_ternp(i-1,j-1)得出結(jié)果后我們根據(jù)dict ternp中的內(nèi)容進(jìn)行輸出便可以顯示出對(duì)應(yīng)的楊輝三角。

        創(chuàng)建列表nz=[1]。增加一個(gè)外循環(huán)控制行數(shù),在循環(huán)中增加兩個(gè)條件,第一個(gè)條件是控制每行的個(gè)數(shù),第二個(gè)條件是控制每行輸出的數(shù)字,首先我們輸出變量n,接下來(lái)給n末尾添加一個(gè)數(shù)0,通過(guò)一個(gè)循環(huán)對(duì)數(shù)進(jìn)行控制n=z[n[k]+n[k 1]for k in range(i+2)]。比如第二行的內(nèi)容是【1,1】,通過(guò)循環(huán)n[k]+n[k-1]等于【1,2,1】,這樣大大節(jié)約了代碼量,但是提高了代碼的認(rèn)知難度。

        現(xiàn)在代碼只是有了正確的數(shù)字,但這些數(shù)字還沒(méi)有在正確的位置上,需要你用合適數(shù)量的空格來(lái)填滿。

        国产一区二区精品亚洲| 精品欧美久久99久久久另类专区| 免费人成视频欧美| 强迫人妻hd中文字幕| 亚洲av无码一区东京热久久| 特级婬片国产高清视频| 久久久久欧洲AV成人无码国产 | 国产va在线观看免费| 国产偷国产偷高清精品| 亚洲国产一区二区精品| 精品亚洲一区二区区别在线观看| 无码乱人伦一区二区亚洲一| 国产成人久久精品区一区二区| 精品人妻久久av中文字幕| 91精品国产综合久久熟女| 亚洲va无码手机在线电影| 国产a级网站| 日本人妻系列一区二区| 日本精品一区二区三区福利视频 | 久久久精品毛片免费观看| 国产午夜成人av在线播放| 亚洲男人的天堂网站| 亚洲精品精品日本日本| 国产一区二区三区三区四区精品| 欧美人与物videos另类| 亚洲AV成人无码久久精品四虎 | 丰满少妇又紧又爽视频| h视频在线免费观看视频| 亚洲av永久无码一区二区三区| 精品乱码久久久久久中文字幕| 国产在线一区二区视频免费观看| 91视色国内揄拍国内精品人妻 | 亚洲精品永久在线观看| 免费在线观看蜜桃视频| 国产精品美女久久久网站三级| 久久精品免费观看国产| 人妻精品丝袜一区二区无码AV| 日本久久久精品免费免费理论| 国产亚洲精品a片久久久| 欧美视频二区欧美影视| 亚洲日本一区二区在线观看|