国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

遞歸函數(shù)初探

2020-11-16 08:44
電腦報 2020年41期
關(guān)鍵詞:調(diào)用母牛積木

在編程學習中,大家常常會聽到一個詞語——遞歸。遞歸是什么?遞歸函數(shù)又是什么?一個過程或函數(shù)在其定義或說明中有直接或者間接調(diào)用自身的一種方法被稱為遞歸。

在經(jīng)過一段時間的編程學習后你對遞歸函數(shù)一定不會陌生,我們經(jīng)常需要用遞歸的方法來解決一系列復(fù)雜的問題,遞歸算法對于大多數(shù)問題都是很有效的,而且它很大程度上可以優(yōu)化我們的代碼。今天我們結(jié)合Scratch和Python來講一講遞歸函數(shù)。

一、 Scratch算階乘

當我們想計算一個正整數(shù)的階乘時就可以應(yīng)用到遞歸的思想。首先用戶手動輸入一個正整數(shù),計算它的階乘。方法有兩種,一種使用循環(huán)的思路,不用遞歸(圖1)。一種創(chuàng)建一個自制積木,使用遞歸的思想(圖2)。

用循環(huán)計算階乘

用遞歸計算階乘

第一種方法直接按階乘的概念計算容易理解。利用循環(huán)的方法完成n!=1×2×3×4……n。

使用第二種遞歸方法對于初學者理解上有一點困難,首先需要創(chuàng)建一個帶變量的自制積木,然后在自制積木中增加遞歸的終止條件(如果n=1那么停止腳本程序),然后才能實施遞歸的過程,并且在自制積木中增加積木自身——完成調(diào)用自身,最終程序會根據(jù)遞歸的方法一直運行至終止條件才結(jié)束。

用Scratch的遞歸完成階乘計算后我們可以總結(jié)出以下三點:遞歸是在函數(shù)中調(diào)用函數(shù)本身;由于調(diào)用函數(shù)需要較多計算機資源,所以遞歸的效率比較低,如果有時間限制不建議使用;遞歸過程中需要有一個明確的結(jié)束條件,即遞歸出口。

二、 Python算階乘

如果在Python中遇到需要使用遞歸函數(shù)時,也需要在函數(shù)中調(diào)用函數(shù)本身。一定不要忘記增加停止的條件,如果不滿足條件就可以回到最外層調(diào)用的函數(shù)。

在學習遞歸函數(shù)時最經(jīng)典的問題總是離不開斐波那契數(shù)列和漢諾塔。大家可以搜索相關(guān)的知識點,有很多利用遞歸方式來解決這些問題的例子。

同樣是階乘的問題給大家看看Python使用遞歸函數(shù)的解決方法(圖3)。

運行效果如圖4。

三、 藍橋杯中的遞歸問題

我們通過Scratch和Python的遞歸函數(shù)解決了階乘問題,接下來我們實戰(zhàn)一道藍橋杯中的遞歸題《母牛的故事》:有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,每年年初也生一頭小母牛。請編程實現(xiàn)在第n年的時候,共有多少頭母牛?

假設(shè)我們正在藍橋杯的賽場上,拿到題目之后首先需要分析題目,找出題中的規(guī)律:前四年牛的數(shù)量為母牛每年年初生一頭小母牛,小母牛是不生的。第五年開始小母牛也開始生子。根據(jù)這樣的規(guī)律我們可以列出如圖5的表格,這樣就更方便我們尋找其中規(guī)律了。從表格中可以得出公式:a[i]=a[i-1]+a[i-3]。

然后用我們學過的Python的知識,先定義列表,往list添加初始數(shù)據(jù),預(yù)處理每年母牛的數(shù)量,輸入年份,輸出數(shù)量。

遞歸是學習編程中必須克服的一個難點,在今天有個初步了解后你可以查閱相關(guān)的資料完成斐波那契數(shù)列和漢諾塔的實例。

猜你喜歡
調(diào)用母牛積木
堆積木
肉牛繁育改良技術(shù)要點
母牛難產(chǎn)的原因及其對策
一頭牛所見到的明亮
基于Android Broadcast的短信安全監(jiān)聽系統(tǒng)的設(shè)計和實現(xiàn)
生日
有趣的積木
玩積木
利用RFC技術(shù)實現(xiàn)SAP系統(tǒng)接口通信
C++語言中函數(shù)參數(shù)傳遞方式剖析
肇州县| 潮州市| 剑阁县| 清水县| 灌阳县| 博乐市| 盈江县| 桦甸市| 慈利县| 曲沃县| 安徽省| 应城市| 巴塘县| 抚宁县| 斗六市| 宕昌县| 革吉县| 福泉市| 盐亭县| 潮州市| 建始县| 南昌市| 阜宁县| 个旧市| 邹平县| 巴彦县| 涿鹿县| 新野县| 中卫市| 旌德县| 萝北县| 汕尾市| 永仁县| 古交市| 嵊州市| 中方县| 永川市| 万载县| 休宁县| 鲜城| 镇原县|