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

        ?

        “程序設(shè)計(jì)基礎(chǔ)”課程函數(shù)設(shè)計(jì)教學(xué)方法探討

        2009-06-20 08:45:46王桂平
        計(jì)算機(jī)教育 2009年10期
        關(guān)鍵詞:教學(xué)

        文章編號(hào):1672-5913(2009)10-0116-04

        摘要:本文針對(duì)“程序設(shè)計(jì)基礎(chǔ)”課程介紹了以在線實(shí)踐為導(dǎo)向的教學(xué)思路,并對(duì)其中的函數(shù)設(shè)計(jì)教學(xué),提出了新穎的教學(xué)過(guò)程:承上啟下、因勢(shì)利導(dǎo)地引入函數(shù)的概念和作用;循序漸進(jìn)地講解函數(shù)的設(shè)計(jì)方法;以及通過(guò)遞歸函數(shù)設(shè)計(jì)來(lái)提高學(xué)生對(duì)函數(shù)功能的理解和對(duì)函數(shù)設(shè)計(jì)技巧的掌握。

        關(guān)鍵詞:程序設(shè)計(jì)基礎(chǔ);在線實(shí)踐導(dǎo)向;函數(shù)設(shè)計(jì);遞歸函數(shù);教學(xué)

        中圖分類(lèi)號(hào):G642

        文獻(xiàn)標(biāo)識(shí)碼:B

        1引言

        在文獻(xiàn)[1]中,作者針對(duì)“程序設(shè)計(jì)基礎(chǔ)”課程提出了以在線實(shí)踐為導(dǎo)向的教學(xué)思路,其主要思想為:以學(xué)科競(jìng)賽為驅(qū)動(dòng)、以在線實(shí)踐為導(dǎo)向、以課程設(shè)計(jì)進(jìn)行強(qiáng)化。這種教學(xué)思路以程序設(shè)計(jì)思想和方法的培養(yǎng)為主,以程序設(shè)計(jì)語(yǔ)言教學(xué)為輔。

        我們?cè)诮虒W(xué)中以ACM/ICPC程序設(shè)計(jì)競(jìng)賽為驅(qū)動(dòng),激發(fā)學(xué)生的學(xué)習(xí)興趣和競(jìng)爭(zhēng)意識(shí),培養(yǎng)學(xué)生的主動(dòng)思維能力。另外,我們?cè)谡n程的教學(xué)中根據(jù)教學(xué)的需要選取國(guó)內(nèi)外著名OJ(Online Judge,在線評(píng)判)網(wǎng)站上的試題作為例題和練習(xí)題,以培養(yǎng)學(xué)生獨(dú)立分析問(wèn)題、解決問(wèn)題的能力,以及分組討論、團(tuán)隊(duì)協(xié)作、文檔組織等能力。在課程的最后階段,我們通過(guò)課程設(shè)計(jì)強(qiáng)化學(xué)生的學(xué)習(xí)效果。

        為了適應(yīng)以在線實(shí)踐為導(dǎo)向的教學(xué)思路,在文獻(xiàn)[1]中,我們重新設(shè)計(jì)了“程序設(shè)計(jì)基礎(chǔ)”課程的理論教學(xué)內(nèi)容和實(shí)踐教學(xué)內(nèi)容。其中理論教學(xué)內(nèi)容的設(shè)置和課時(shí)安排如表1所示。

        從表1可以看出,理論教學(xué)內(nèi)容安排的思路是:先用盡可能少的時(shí)間講解編寫(xiě)一個(gè)C/C++程序所需的最小語(yǔ)法知識(shí)集,然后講解常用的程序設(shè)計(jì)思想和方法;最后是課程設(shè)計(jì)。

        函數(shù)設(shè)計(jì)的教學(xué)是“程序設(shè)計(jì)基礎(chǔ)”課程的一個(gè)重點(diǎn)內(nèi)容。本文針對(duì)這部分內(nèi)容的教學(xué),提出了新穎的教學(xué)過(guò)程。在以往的教學(xué)中,函數(shù)設(shè)計(jì)一般是放在程序控制結(jié)構(gòu)、數(shù)組等內(nèi)容之后,前后教學(xué)內(nèi)容的設(shè)置并沒(méi)有直接聯(lián)系,使得學(xué)生難以理解函數(shù)的概念、功能和設(shè)計(jì)方法。

        我們?cè)诮虒W(xué)中采取新穎的方法和過(guò)程自然地引入數(shù)

        學(xué)函數(shù)的使用、循序漸進(jìn)地介紹函數(shù)的設(shè)計(jì)方法、以及通過(guò)遞歸函數(shù)設(shè)計(jì)來(lái)提高學(xué)生對(duì)函數(shù)功能的理解和對(duì)函數(shù)設(shè)計(jì)技巧的掌握。

        教改課題項(xiàng)目:浙江財(cái)經(jīng)學(xué)院2008年教學(xué)科研重大課題《以學(xué)科競(jìng)賽為驅(qū)動(dòng)和以在線實(shí)踐為導(dǎo)向的程序設(shè)計(jì)課程教學(xué)改革》(課題編號(hào):JK200812)。

        作者簡(jiǎn)介:王桂平(1979-),男,江西省安??h人,講師,在讀博士,浙江財(cái)經(jīng)學(xué)院信息學(xué)院教師。主要研究方向:算法分析與設(shè)計(jì),圖像處理與模式識(shí)別。

        2承上啟下、因勢(shì)利導(dǎo)地引入函數(shù)

        學(xué)生對(duì)知識(shí)點(diǎn)的理解需要一個(gè)過(guò)程,而且這個(gè)過(guò)程越自然越利于學(xué)生接受知識(shí)點(diǎn)。所以我們?cè)诮虒W(xué)過(guò)程中盡早地引入函數(shù)的概念,自然地過(guò)渡到函數(shù)設(shè)計(jì)。

        2.1從數(shù)學(xué)函數(shù)的使用入手

        我們所設(shè)計(jì)的第1部分教學(xué)內(nèi)容是以數(shù)值型數(shù)據(jù)的處理為線索,以簡(jiǎn)單數(shù)學(xué)計(jì)算或數(shù)學(xué)應(yīng)用題目為例子來(lái)講解C/C++語(yǔ)言語(yǔ)法知識(shí),如報(bào)數(shù)游戲、閏年的判斷、求三角形面積、素?cái)?shù)和完數(shù)的判斷、Fibonacci數(shù)列各項(xiàng)遞推、迭代法求平方根等等。以這些數(shù)學(xué)應(yīng)用為例講解語(yǔ)言語(yǔ)法,學(xué)生更容易接受,因?yàn)檫@些數(shù)學(xué)應(yīng)用問(wèn)題學(xué)生已經(jīng)在高等數(shù)學(xué)甚至初等數(shù)學(xué)中就已經(jīng)學(xué)過(guò)了,現(xiàn)在只是用編寫(xiě)程序的方法去求解。

        在進(jìn)行數(shù)據(jù)處理時(shí),經(jīng)常要進(jìn)行一定的運(yùn)算,才能得到結(jié)果,運(yùn)算是通過(guò)運(yùn)算符和表達(dá)式來(lái)實(shí)現(xiàn)的。所以我們?cè)诮榻B完C/C++語(yǔ)言中的數(shù)據(jù)(變量和常量)后,就自然地過(guò)渡到運(yùn)算符和表達(dá)式了。

        在進(jìn)行數(shù)據(jù)處理時(shí),僅有運(yùn)算符和表達(dá)式往往是不夠的,經(jīng)常還需要使用到數(shù)學(xué)函數(shù)。因此,我們?cè)诮榻B完運(yùn)算符和表達(dá)式后,緊接著就向?qū)W生介紹數(shù)學(xué)函數(shù)的使用。

        盡管這時(shí)學(xué)生對(duì)函數(shù)的概念和功能還一知半解,一開(kāi)始也不能正確地使用數(shù)學(xué)函數(shù),但我們認(rèn)為從數(shù)學(xué)函數(shù)的使用入手,能較早地讓學(xué)生接觸到函數(shù)的使用,也能讓學(xué)生更自然地接受函數(shù)的概念。特別是學(xué)生在學(xué)初等數(shù)學(xué)時(shí),已經(jīng)具備了數(shù)學(xué)上函數(shù)、函數(shù)的自變量、函數(shù)值等概念,這些概念有助于學(xué)生初步理解程序設(shè)計(jì)語(yǔ)言中的函數(shù)、函數(shù)參數(shù)、函數(shù)返回值等概念。

        例如,要對(duì)2.5開(kāi)3次方根,即要求2.51/3。老師向?qū)W生介紹了數(shù)學(xué)函數(shù)pow的原型后,學(xué)生一開(kāi)始可能將pow函數(shù)的調(diào)用錯(cuò)誤地寫(xiě)成如下的形式:

        double x = 2.5, y = 1.0/3, z;

        z = double pow( x, y );

        z = double pow( double x, double y );

        等等。導(dǎo)致這些錯(cuò)誤的原因是學(xué)生還沒(méi)有函數(shù)原型的概念,老師只要將這些錯(cuò)誤的調(diào)用形式糾正過(guò)一兩次,學(xué)生就能舉一反三,正確地使用數(shù)學(xué)函數(shù)。

        2.2從二重循環(huán)過(guò)渡到函數(shù)設(shè)計(jì)

        我們?cè)凇八惴翱刂平Y(jié)構(gòu)”這一節(jié)內(nèi)容的教學(xué)中,是以二重循環(huán)的使用作為結(jié)尾的,如輸出100~200之內(nèi)的所有素?cái)?shù)、輸出6~10000之間的完數(shù)等等。這些程序的main函數(shù)代碼比較長(zhǎng),這樣,當(dāng)我們?cè)谥v解函數(shù)時(shí),就很自然地引入函數(shù)對(duì)main函數(shù)的功能進(jìn)行分解。

        例如,要輸出100~200之內(nèi)的素?cái)?shù),可以用一個(gè)2重循環(huán)實(shí)現(xiàn)。但如果有一個(gè)函數(shù)prime,能夠?qū)崿F(xiàn)判斷一個(gè)正整數(shù)m是否為素?cái)?shù)。其調(diào)用形式是:prime(m)。調(diào)用該函數(shù)后返回值如果為1,則m為素?cái)?shù);如果為0,則m為合數(shù)。因此我們只需要用如下的代碼就可以輸出100~200之內(nèi)的所有素?cái)?shù):

        for( int m =100; m<=200; m++ )

        {

        if( prime(m) )

        printf( "%d ", m );

        }

        在這個(gè)例子中,我們把“輸出100~200之內(nèi)所有素?cái)?shù)”的功能需求進(jìn)行分解,把“判斷一個(gè)整數(shù)是否為素?cái)?shù)”的功能用prime函數(shù)去實(shí)現(xiàn)。這就是函數(shù)的功能所在。

        通過(guò)這樣的講解,學(xué)生能較自然地理解函數(shù)的功能,也更容易接受函數(shù)的概念。

        3循序漸進(jìn)地講解函數(shù)設(shè)計(jì)(基礎(chǔ)篇)

        從二重循環(huán)過(guò)渡到函數(shù)的功能和概念后,我們采取以下教學(xué)方法,使得學(xué)生能在較短的時(shí)間里掌握函數(shù)的設(shè)計(jì)方法。

        3.1循序漸進(jìn),步步深入

        在講解函數(shù)的定義和調(diào)用時(shí),對(duì)其中的知識(shí)點(diǎn),我們采取以下順序進(jìn)行講解:函數(shù)的定義、函數(shù)的參數(shù)、函數(shù)的返回值、函數(shù)的調(diào)用。

        我們認(rèn)為,按照這樣的順序進(jìn)行講解是合理的,因?yàn)閷W(xué)生已經(jīng)掌握了數(shù)學(xué)函數(shù)的使用,已經(jīng)能初步理解函數(shù)的相關(guān)概念了,我們按照這樣的順序講解可以循序漸進(jìn)地進(jìn)入到自定義函數(shù)的定義和調(diào)用上。在這個(gè)過(guò)程中,我們將教學(xué)的重點(diǎn)放在函數(shù)形參、實(shí)參和函數(shù)返回值上。

        3.2切中要害,見(jiàn)招拆招

        很多初學(xué)者對(duì)函數(shù)比較頭疼,不知道該如何設(shè)計(jì)函數(shù)。具體體現(xiàn)在:

        (1) 不知道函數(shù)是否有參數(shù),有幾個(gè)參數(shù),是否有返回值,隨意地設(shè)置函數(shù)的參數(shù)和返回值。

        (2) 不明確函數(shù)要處理的數(shù)據(jù)是哪些,不明白函數(shù)形參的作用是什么,形參的值是在什么時(shí)候被“賦予”的。初學(xué)者經(jīng)常在函數(shù)里通過(guò)輸入語(yǔ)句給形參輸入數(shù)據(jù)。例如,初學(xué)者可能在定義上述prime函數(shù)時(shí)輸入數(shù)據(jù)到形參x中:

        int prime( int x )

        {

        printf( "%d", &x );

        }

        對(duì)于第1個(gè)問(wèn)題,我們的解釋是:程序設(shè)計(jì)者希望采用怎樣的形式去調(diào)用函數(shù),這種函數(shù)調(diào)用形式里有幾個(gè)參數(shù),分別是什么類(lèi)型,是以此來(lái)確定函數(shù)的形參個(gè)數(shù)和類(lèi)型;程序設(shè)計(jì)者希望函數(shù)執(zhí)行以后是否得到一個(gè)結(jié)果,這個(gè)結(jié)果是什么類(lèi)型的,是什么含義,是否需要返回到主調(diào)函數(shù)中,以此來(lái)確定函數(shù)的返回值及其類(lèi)型、含義等。

        對(duì)于第2個(gè)問(wèn)題,我們的解釋是:函數(shù)形參是在函數(shù)調(diào)用時(shí),通過(guò)實(shí)參與形參之間的數(shù)據(jù)傳遞,從而“被賦予”了值。只要沒(méi)有函數(shù)調(diào)用發(fā)生,就不會(huì)給形參分配存儲(chǔ)空間;當(dāng)函數(shù)調(diào)用發(fā)生時(shí),為形參分配存儲(chǔ)空間,并把實(shí)參的值賦值給形參。

        對(duì)于上述解釋?zhuān)覀円郧懊嬷v過(guò)的二重循環(huán)例子來(lái)進(jìn)一步闡述。即輸出100~200之內(nèi)所有素?cái)?shù),要求:1)定義一個(gè)函數(shù)prime,用于判斷x是否為素?cái)?shù),如果為素?cái)?shù),返回1,否則返回0;2)在主函數(shù)中調(diào)用prime函數(shù),用于判斷100~200之間的每個(gè)數(shù)是否為素?cái)?shù)。

        根據(jù)題目的意思,主調(diào)函數(shù)中調(diào)用prime函數(shù)的形式是prime(199),即判斷199是否為素?cái)?shù),如果為素?cái)?shù)則返回1,否則返回0。因此,prime函數(shù)的原型為:

        int prime( int x );

        另外,在prime函數(shù)里,是要判斷形參x是否為素?cái)?shù),這個(gè)x的值不是在prime函數(shù)里通過(guò)輸入語(yǔ)句輸進(jìn)去的,也不是采用賦值的方式“賦予”給它的,而是在主調(diào)函數(shù)中調(diào)用prime函數(shù)時(shí),如prime(199),把實(shí)參199的值傳遞給形參x的,因此這時(shí)執(zhí)行prime函數(shù),形參x的值就是199,調(diào)用prime函數(shù)就是要判斷199是否為素?cái)?shù)。

        講解并演示這些過(guò)程后,我們?cè)谡n堂上可以通過(guò)一些練習(xí)題進(jìn)一步考查學(xué)生對(duì)利用函數(shù)進(jìn)行功能分解、函數(shù)設(shè)計(jì)、函數(shù)調(diào)用的理解。

        3.3精選例題,事半功倍

        我們所設(shè)計(jì)的第1部分教學(xué)內(nèi)容是以數(shù)值型數(shù)據(jù)的處理為線索,以簡(jiǎn)單數(shù)學(xué)計(jì)算或數(shù)學(xué)應(yīng)用題為例子來(lái)講解的,函數(shù)的設(shè)計(jì)也不例外。例如,我們通過(guò)以下例子來(lái)講解函數(shù)的嵌套調(diào)用。

        拋物線y = x2/(2*p)繞它的對(duì)稱(chēng)軸x = 0旋轉(zhuǎn)所成的曲面就是旋轉(zhuǎn)拋物面。放在焦點(diǎn)F(0, p/2)處的光源所發(fā)出的光,經(jīng)過(guò)拋物面各點(diǎn)反射之后就成為平行光束,如圖1??梢岳眠@一性質(zhì)制造需要發(fā)射平行光的燈具,例如:探照燈,汽車(chē)的車(chē)前燈等。請(qǐng)編寫(xiě)程序驗(yàn)證這個(gè)性質(zhì)。

        題目的意思是,如圖1所示,從焦點(diǎn)F發(fā)射的任意光線,比如圖中的兩條光線L和L',經(jīng)過(guò)拋物面反射后,反射光線R和R'都平行y軸。

        要證明反射光線R平行y軸,只要證明∠1 = ∠3,而∠1和∠2是相等的,所以只要證明∠2=∠3即可,即只要證明FC = FT,這里點(diǎn)C是光線L與拋物線的交點(diǎn),點(diǎn)T是拋物線在C點(diǎn)的切線與y軸的交點(diǎn)。

        以下編寫(xiě)程序,實(shí)現(xiàn):任意給定拋物線參數(shù)p和發(fā)射光線斜率k,輸出線段FC和FT的長(zhǎng)度。

        在本題中,我們?cè)O(shè)計(jì)以下3個(gè)函數(shù)來(lái)實(shí)現(xiàn)程序的全部功能:

        (1) main函數(shù):在main函數(shù)中輸入拋物線參數(shù)p和直線參數(shù)k,接下來(lái)所有工作都是通過(guò)調(diào)用solve函數(shù)實(shí)現(xiàn)的。

        (2) solve函數(shù):求交點(diǎn)C和交點(diǎn)F的坐標(biāo),并調(diào)用length函數(shù)求線段FC和FT的長(zhǎng)度并輸出。solve函數(shù)有兩個(gè)形參,即拋物線參數(shù)p和直線參數(shù)k,沒(méi)有返回值。solve函數(shù)的原型為:

        void solve(double p, double k);

        (3) length函數(shù):求平面上兩點(diǎn)(x1,y1)和(x2,y2)的距離,即連接這兩點(diǎn)的線段的長(zhǎng)度。該函數(shù)有4個(gè)形參,為這兩個(gè)點(diǎn)的坐標(biāo);返回值為求的線段長(zhǎng)度。length函數(shù)的原型為:

        double length( double x1, double y1,

        double x2, double y2 );

        通過(guò)這道題目的講解,學(xué)生在求解比較復(fù)雜的數(shù)學(xué)應(yīng)用題時(shí),能根據(jù)需要對(duì)程序的功能進(jìn)行分解并用不同的函數(shù)實(shí)現(xiàn)。

        4遞歸函數(shù)設(shè)計(jì)(提高篇)

        在以前的教學(xué)中,函數(shù)設(shè)計(jì)通常需要2~3周才能講完。而在目前的教學(xué)中,我們將函數(shù)重載、有默認(rèn)參數(shù)的函數(shù)等內(nèi)容剔除掉后,學(xué)生能夠在1周(3個(gè)理論課時(shí)+2個(gè)實(shí)驗(yàn)課時(shí))的教學(xué)中初步掌握函數(shù)的設(shè)計(jì)方法。在后續(xù)章節(jié)的教學(xué)中,我們列舉的很多例題也需要通過(guò)設(shè)計(jì)函數(shù)來(lái)實(shí)現(xiàn),所以在后續(xù)的教學(xué)中一直在進(jìn)一步加強(qiáng)學(xué)生對(duì)函數(shù)設(shè)計(jì)方法的掌握。另外,我們將遞歸函數(shù)的設(shè)計(jì)放在“遞歸與搜索”這一章當(dāng)中來(lái)講解,作為函數(shù)設(shè)計(jì)的提高階段。

        遞歸是很多算法的基礎(chǔ),如搜索、分治等,也是課程的一個(gè)難點(diǎn)。學(xué)生在掌握了一般函數(shù)的設(shè)計(jì)方法后,在利用遞歸思想進(jìn)行搜索求解時(shí)需要注意以下兩個(gè)問(wèn)題:

        (1) 如何設(shè)計(jì)遞歸函數(shù)遞歸函數(shù)的設(shè)計(jì)主要面臨以下幾個(gè)問(wèn)題:

        ① 需要將什么信息傳遞給下一層遞歸調(diào)用?——由此確定遞歸函數(shù)有幾個(gè)參數(shù),各參數(shù)含義是什么。

        ② 每一層遞歸函數(shù)調(diào)用后會(huì)得到一個(gè)怎樣的結(jié)果?這個(gè)結(jié)果是否需要返回到上一層?——由此確定遞歸函數(shù)的返回值,及返回值的含義。

        ③ 在每一層遞歸函數(shù)的執(zhí)行過(guò)程中,在什么情形下需要遞歸調(diào)用下一層?以及遞歸前該做什么準(zhǔn)備工作?遞歸返回后該做什么恢復(fù)工作?——由此確定遞歸函數(shù)中遞歸調(diào)用的細(xì)節(jié)。

        ④ 遞歸函數(shù)執(zhí)行到什么程度就可以不再需要遞歸調(diào)用下去了?——應(yīng)該在適當(dāng)?shù)臅r(shí)候終止遞歸函數(shù)的繼續(xù)遞歸調(diào)用,也就是要確定遞歸的終止條件。

        (2) 如何調(diào)用遞歸函數(shù)進(jìn)行求解

        調(diào)用遞歸函數(shù)進(jìn)行求解:在main函數(shù)(或其他函數(shù))中應(yīng)該采取怎樣的形式調(diào)用遞歸函數(shù)?也就是從怎樣的初始狀態(tài)出發(fā)進(jìn)行搜索,通常也就是確定實(shí)參的值。

        我們?cè)诮虒W(xué)中以一些經(jīng)典的競(jìng)賽題目為例來(lái)闡述上述方法,如有這樣一道例題:有17種硬幣,硬幣的面值是平方數(shù)12, 22, 32, …, 172,即1, 4, 9, …, 289。問(wèn)要支付一定額的貨幣,有多少種支付方法。

        例如,若要支付總額為10的貨幣,則有四種方法:10個(gè)面值為1的貨幣;1個(gè)面值為4的貨幣和6個(gè)面值為1的貨幣;2個(gè)面值為4的貨幣和2個(gè)面值為1的貨幣;1個(gè)面值為9的貨幣和1個(gè)面值為1的貨幣。

        在本題中,為避免求得重復(fù)的支付方案,我們需要按硬幣面值從小到大的順序依次選用合適的硬幣,如果當(dāng)前選用的硬幣面值總額小于需要支付的貨幣總額n,則繼續(xù)選用;如果等于,則我們找到一種方案,不再考慮其他貨幣,而是繼續(xù)下一個(gè)方案的選擇;如果大于,則放棄該方案,繼續(xù)下一個(gè)方案的選擇。

        我們?cè)O(shè)計(jì)一個(gè)遞歸函數(shù)build來(lái)求貨幣總額n的支付方案數(shù),build函數(shù)的設(shè)計(jì)思路是:

        ●確定build函數(shù)的參數(shù):需要支付的貨幣金額、現(xiàn)已求得的支付方案數(shù)、當(dāng)前選用的硬幣面值總額、當(dāng)前最后選用的硬幣是第幾種硬幣這些信息需要傳遞到下一層遞歸調(diào)用。因此確定build函數(shù)有4個(gè)參數(shù):n、count、sum、j,分別對(duì)應(yīng)上述4種信息。

        ●確定build函數(shù)的返回值:每次build遞歸調(diào)用結(jié)束后,求得的是當(dāng)前找到的方案數(shù),最上層的build函數(shù)執(zhí)行完后,得到的結(jié)果是最終找到的方案數(shù),因此build有返回值,為int型。

        ●確定在什么情況下要遞歸調(diào)用下一層build函數(shù):分別考慮第i種貨幣(i取值為j、j+1、…、17),如果選用該種貨幣(sum的值增加i*i)后,sum仍小于n,則遞歸調(diào)用build函數(shù):build( n, count, sum, i);從該遞歸調(diào)用返回后,sum的值要減去i*i,

        表示棄用第i種貨幣,繼續(xù)考察下一種貨幣。

        ●確定build函數(shù)的終止條件:如果當(dāng)前選用硬幣面值總額sum等于或大于n時(shí),不再遞歸調(diào)用下去,其中前一種情形還需將count的值加1,表示找到一種支付方案。

        根據(jù)上述分析,設(shè)計(jì)的build函數(shù)如下:

        int build(int n, int count, int sum,int j)

        {

        int i; //循環(huán)變量

        for( i=1; i<=17; i++ )//搜索所有面值的硬幣

        {

        if( i

        sum += i*i; //選用面值為i*i的硬幣

        //找到一種支付方案

        if( sum==n )return ++count;

        //超出了支付總額,不再搜索

        if( sum>n )return count;

        //沒(méi)超出則遞歸調(diào)用build函數(shù)繼續(xù)搜索

        count = build( n, count, sum, i );

        sum -= i*i; //棄用面值為i*i的硬幣

        }

        return count;

        }

        build函數(shù)設(shè)計(jì)好以后,在主函數(shù)中,只要采取以下語(yǔ)句調(diào)用build函數(shù)就可以求得貨幣總額n的支付方案數(shù)count:

        count = build( n, 0, 0, 0 );

        4個(gè)實(shí)參的值代表問(wèn)題的初始狀態(tài):需支付的貨幣總額為n、現(xiàn)已求得的支付方案數(shù)為0、當(dāng)前選用的硬幣面值總額為0、當(dāng)前最后選用的硬幣是第0種硬幣。

        通過(guò)這些搜索題目的講解,學(xué)生能在理解搜索思想的同時(shí)掌握遞歸函數(shù)的設(shè)計(jì)技巧,從而進(jìn)一步提高函數(shù)設(shè)計(jì)能力。

        5結(jié)束語(yǔ)

        函數(shù)設(shè)計(jì)是“程序設(shè)計(jì)基礎(chǔ)”課程的一個(gè)重點(diǎn),也是學(xué)生普遍感到難以掌握的一個(gè)知識(shí)點(diǎn)。本文在以在線實(shí)踐為導(dǎo)向的教學(xué)思路基礎(chǔ)上,詳細(xì)的介紹了我們?cè)诤瘮?shù)設(shè)計(jì)教學(xué)中采取的教學(xué)方法和過(guò)程,這些方法和過(guò)程都是以在線實(shí)踐為導(dǎo)向的教學(xué)思路的具體體現(xiàn)。

        參考文獻(xiàn):

        [1] 王桂平,馮睿. 以在線實(shí)踐為導(dǎo)向的程序設(shè)計(jì)課程教學(xué)新思路[J]. 計(jì)算機(jī)教育,2008(22):100-102.

        [2] 方紅琴. 點(diǎn)面結(jié)合突破C程序設(shè)計(jì)函數(shù)教學(xué)中的重難點(diǎn)[J]. 計(jì)算機(jī)教育,2008(22):130-131.

        [3] 謝偉增,李瑾. C語(yǔ)言程序設(shè)計(jì)中的重點(diǎn):函數(shù)與指針[J]. 河南廣播電視大學(xué)學(xué)報(bào),2003,16(4):65-66.

        [4] 羅碧波. C/C++語(yǔ)言程序中函數(shù)調(diào)用解決辦法[J]. 計(jì)算機(jī)時(shí)代,2007(5):66-67.

        猜你喜歡
        教學(xué)
        微課讓高中數(shù)學(xué)教學(xué)更高效
        甘肅教育(2020年14期)2020-09-11 07:57:50
        「微寫(xiě)作」教學(xué)實(shí)踐的思考
        “以讀促寫(xiě)”在初中寫(xiě)作教學(xué)中的應(yīng)用
        如何讓高中生物教學(xué)變得生動(dòng)有趣
        甘肅教育(2020年12期)2020-04-13 06:25:34
        談高中音樂(lè)欣賞教學(xué)中的“聽(tīng)、看、想、說(shuō)、動(dòng)”
        “自我診斷表”在高中數(shù)學(xué)教學(xué)中的應(yīng)用
        東方教育(2017年19期)2017-12-05 15:14:48
        對(duì)外漢語(yǔ)教學(xué)中“想”和“要”的比較
        對(duì)識(shí)譜教學(xué)的認(rèn)識(shí)與思考
        《可以預(yù)約的雪》教學(xué)探索與思考
        對(duì)高等數(shù)學(xué)教學(xué)的一些思考
        久久精品国产亚洲综合色| 女同在线视频一区二区| 日韩一区二区三区天堂| 厕所极品偷拍一区二区三区视频 | 久久丫精品国产亚洲av不卡| a级毛片无码免费真人| 欧美与黑人午夜性猛交久久久| 国产麻无矿码直接观看| 国模精品二区| 在线观看极品裸体淫片av| 亚洲女同性恋在线播放专区| 日本女优中文字幕亚洲| 亚洲国产精品成人av在线不卡| 亚洲国产精品亚洲一区二区三区| 亚洲av中文无码字幕色本草| 久久精品国产亚洲7777| 无码av无码天堂资源网| 亚洲国产精品特色大片观看完整版| 国产98在线 | 免费| 国产国拍亚洲精品福利| 一区二区三区四区在线观看视频 | 真人做爰试看120秒| 免费看男女做羞羞的事网站| 亚洲av无码专区在线播放中文| 69久久夜色精品国产69| 国产精品1区2区| 国产精品黄页免费高清在线观看| 极品粉嫩嫩模大尺度视频在线播放 | 中文字幕一区二区综合| 久久久精品久久久久久96| 国产日韩av在线播放| 久久综合国产乱子伦精品免费| 日本无遮挡吸乳呻吟视频| 青青草国产成人99久久| 日本韩国三级aⅴ在线观看| 偷拍av一区二区三区| 日本免费一区二区久久久| 一区二区三区人妻av | 中文字幕天天躁日日躁狠狠躁免费| 亚洲免费观看在线视频| 第十色丰满无码|