久久精品国产99国产精品,农村大炕弄老女人,人马配速90分钟,香蕉成人伊视频在线观看

通過Python3實現一些簡單遞歸函數

大家好!今天我給大家演示一下通過Python3實現一些簡單遞歸函數的過程。遞歸算法實際上就是分而治之思想的具體應用。每當你設計一個算法時,只要發現算法的處理對象變化,但是處理過程(步驟)相同,則可以優

大家好!今天我給大家演示一下通過Python3實現一些簡單遞歸函數的過程。遞歸算法實際上就是分而治之思想的具體應用。每當你設計一個算法時,只要發現算法的處理對象變化,但是處理過程(步驟)相同,則可以優先考慮遞歸實現,尤其是在處理的對象個數不確定時更需要采用遞歸算法。設計遞歸算法時,只需要找到基線條件(函數返回的條件)和遞歸條件(繼續進行遞歸調用的條件)即可開始編寫算法實現,通常這兩個條件是互斥存在的。如果您覺得這篇教程有幫助,請為我投上寶貴的一票,謝謝!

創建Pure Python項目

啟動PyCharm軟件,新建一個名為"AlgorithmDemo4"的Pure Python項目,然后向項目中添加一個名為""的Python文件。在文件中定義一個sum_num函數,然后調用此函數輸出100以內的自然數之和。sum_num函數采用for循環實現從1到n之間的自然數累加,計算的最終結果會返回給函數調用者。測試代碼編寫完畢后,調試運行程序。在彈出的控制臺窗口中,可以見到程序的執行結果,表示一切正常。

使用等差數列求和公式

關閉控制臺窗口,返回到文件中。繼續定義一個sum_num_formula函數及調用此函數計算100以內自然數的測試代碼。sum_num_formula函數根據等差數列求和公式實現,具有極高的運算效率。測試代碼編寫完畢后,調試運行程序。在彈出的控制臺窗口中,可以確定該函數的計算結果與sum_num函數相同,唯一區別是其返回值為浮點數。

遞歸方式計算自然數之和

關閉控制臺窗口返回文件中。這次在代碼中定義一個以遞歸方式計算N以內自然數和的函數sum_num_rec。實現該函數的實質,仍舊是累加求和,與for循環實現不同的是每次累加都是通過調用函數自身實現的,另外,遞歸是從n加到1,當n等于0時即停止遞歸(即基線條件)。sum_num_rec函數及其測試代碼編寫完畢后,調試運行程序,在彈出的控制臺窗口中,可以見到與之前兩個函數一致的輸出結果,表示算法實現正確。

計算正整數階乘

關閉控制臺窗口返回到文件中,繼續定義一個采用遞歸方式計算正整數階乘的函數calc_factorial以及調用它計算0~10階乘的測試代碼。在實現calc_factorial函數時,需要注意0的階乘是1,表示沒有東西組合,這也是一種組合結果。因此,該函數的基線條件為n等于0,遞歸條件則為n大于0,對于n小于0則當做非法輸入,返回None(這里應該拋異常)。

十進制數轉二進制數

計算階乘的測試代碼編寫完畢后,調試運行程序。在彈出的控制臺窗口中,可以見到輸出的0~10的階乘計算結果。

關閉控制臺窗口返回到文件中。最后,我給大家介紹一下根據短除法計算10進制數轉2進制數的遞歸函數實現過程。短除法實際上具有非常明顯的遞歸特性,其計算條件輸入數小于2,反之則是遞歸條件。對于10進制轉2進制而言,除了用短除法計算二進制位的值,還需要最終將每一步得到的余數顛倒,才能得到正確的結果。因此,在實現d2b函數時,將通過短除法計算二進制位的過程放到short_div函數中,顛倒結果次序的處理則放到d2b函數中。當函數編寫完畢后,繼續添加調用d2b函數輸出0~32的二進制數的測試代碼。

代碼編寫完畢后,調試運行程序,在彈出的控制臺窗口中,可以見到按自定義格式輸出的十進制數轉二進制數的結果。

至此,簡單遞歸算法就介紹完畢了。希望你在設計算法時,可以抓住分而治之思想的精髓(基線條件和遞歸條件),設計出高效的遞歸算法,Enjoy!

標簽:
主站蜘蛛池模板: 股票| 霍城县| 都江堰市| 越西县| 安阳市| 闸北区| 重庆市| 保康县| 郑州市| 阿拉尔市| 顺平县| 南郑县| 庆云县| 盐池县| 仙游县| 阳江市| 赤水市| 叶城县| 唐海县| 朔州市| 灵寿县| 三明市| 汉川市| 敦煌市| 土默特右旗| 松原市| 莒南县| 平和县| 元朗区| 宝应县| 陆河县| 本溪| 安平县| 怀宁县| 临沧市| 荆州市| 兰考县| 定襄县| 屏边| 玉溪市| 雷州市|