金云(江蘇省昆山經(jīng)濟技術開發(fā)區(qū)高級中學,江蘇 昆山 215300)
淺談《遞歸法的實現(xiàn)》課堂教學
金云
(江蘇省昆山經(jīng)濟技術開發(fā)區(qū)高級中學,江蘇 昆山215300)
“遞歸法的實現(xiàn)”是教育科學出版社高中《算法與程序設計》 (選修)第三章第五節(jié)第三小節(jié)的內(nèi)容。我對本小節(jié)教授制定了一定的教學策略,“從游戲來引入課題”,“從簡單、典型例題來講解知識”,“從簡到難來完善鞏固知識”,從而完成教學任務。
我們學校學生的整體知識基礎比較低,“算法與程序設計”與數(shù)學又有很大的關聯(lián),遞歸法對學生來說是非常難的,學生無法理解和想象。因此,我通過設計游戲,讓學生親身體驗,在歡快的氣氛中理解遞歸法。游戲內(nèi)容:將一句詩“柳暗花明又一村”的七個字寫在七張紙上,請八個同學排成一排,七張紙依次貼在第一個到第七個同學的背后,每一個同學只能看前一個同學背后的字,從第一個同學開始依次問下一個同學是句什么詩,然后由最后一個同學開始依次告訴前一個同學他所知道的所有內(nèi)容,最后第一個同學就能猜出是句什么詩了。這個游戲清楚明了地蘊含了遞歸法——遞推和回歸。前面學習了自定義函數(shù),這個游戲用自定義函數(shù)可以這樣描述:
Private Function what(number).如果我是最后一個,我就告訴你是什么字;否則,我問了下一個同學后再一起告訴你End Function。這個函數(shù)的作用就是得到第number個學生知道的字,所以要知道這句詩是什么,就要不停地用這個函數(shù),從而引出遞歸法就是函數(shù)自己調(diào)用自己。
教材上用了兔子繁殖的例題來實現(xiàn)遞歸法,對學生來說是比較難的,就算是讓學生用數(shù)學的方法來做,學生也不一定能正確的算出答案,更不用說用剛學習的遞歸法了,并且在這個程序中用到了在函數(shù)中兩個同時調(diào)用函數(shù)自己,那對學生來說就是難上加難了,所以我就用簡單、典型的例題來講解,幫學生一起用遞歸法來分析問題。例:計算5!。這個題如果讓學生用數(shù)學來做是非常簡單的,人人都會,這樣再用遞歸法來分析就簡單了。分析如下:用遞歸法的思想,5!可以看成(4! ×5),4!可以看出(3!×2)……直到最后一定要知道1!等于1。
某一個數(shù)的階乘都可以看成是它前一個數(shù)的階乘乘以它自己本身,根據(jù)分析能夠編寫這樣的自定義函數(shù),作用是計算某個數(shù)的階乘。
在這代碼中“s=s(n-1)×n”就是再一次調(diào)用了此函數(shù),體現(xiàn)了遞歸法。
學生會覺得很熟悉,在前面學習程序的基本結構時,學習了循環(huán)的嵌套,學生都知道,要內(nèi)循環(huán)都運行完了,再運行外循環(huán);同樣的,在函數(shù)調(diào)用時也是,從內(nèi)到外,內(nèi)部的代碼運行結束了,再運行外部的代碼。通過上述的分析、講解,學生會比較容易的掌握遞歸法。
在學生對遞歸法有一定掌握的基礎上,再來實現(xiàn)兔子繁殖的問題。要用遞歸法來實現(xiàn)此問題,在自定義函數(shù)中要用到兩個同時調(diào)用函數(shù)自己。例:有人養(yǎng)了一對兔子,這對兔子以后每月生一對兔子,新生兔子從第三個月開始,也是每月生一對兔子,問12個月后這人有多少對新生兔子?通過分析,能得出這樣一個數(shù)列,數(shù)學上也稱為斐波那契數(shù)列:1,1,2,3,5,8……
學生自己討論探究,分析結果如下:如果是第一個月或是第二個月,兔子數(shù)都只有一對,否則,兔子數(shù)等于前一個月的兔子數(shù)加前兩月的兔子數(shù)。根據(jù)分析結果,讓學生自主編寫程序,然后教師評講,展示正確代碼。
其中“tu=tu(month-1)+tu(month-2)”這行代碼體現(xiàn)了函數(shù)自己調(diào)用自己,用遞歸法實現(xiàn)了問題,“If month=1 or month=2 then tu=1”這行代碼體現(xiàn)了遞歸法的必要條件——結束條件。在此,為了讓學生對遞歸法理解透徹,學生在做題時一定要清楚兩點:一是要清楚自定義函數(shù)的作用,如例題中函數(shù)的作用是計算某一個月有的兔子對數(shù);二是要清楚自定義函數(shù)如何自己調(diào)用自己的,以及整個程序的運行過程。
通過這題由簡到難,通過學生自主探究,分析解決問題,通過教師提示講評,學生對遞歸法這一知識點進行了鞏固和完善
金云(1984-),女,江蘇昆山人,江蘇省昆山經(jīng)濟技術開發(fā)區(qū)高級中學,中小學一級。研究方向:信息技術教學。