python 使用遞歸實(shí)現(xiàn)打印一個(gè)數(shù)字的每一位示例
我就廢話不多說(shuō)了,直接上代碼吧!
def func(n): # 從高分為開始打印 lengh = len(str(n)) # 確定數(shù)字的長(zhǎng)度 x = 10**(lengh-1) # 確定數(shù)字的分位 if n < 10: print(n) else: print(int(n/x)) func(n % x) # 對(duì)n的x分位取余得到def func1(n): # 從低分位開始打印 if n < 10: print(n) else: print(n % 10) func(int(n / 10))
上述兇高分位打印的時(shí)候,會(huì)出現(xiàn)0無(wú)法打出的現(xiàn)象,現(xiàn)在加一個(gè)判斷做一個(gè)優(yōu)化
def f(n): num_len = len(str(n)) if n < 10: print(n) # return n else: print(int(n / (10**(num_len-1))), end=’ ’) mod = n % (10**(num_len-1)) dif_value = num_len - len(str(mod)) if dif_value > 1: for i in range(1, dif_value):print(0, end=’ ’) f(mod)f(200400900000)
當(dāng)然也有同學(xué)有跟簡(jiǎn)單的方法來(lái)寫,但是需要一定的理解力,就是把低分為的實(shí)現(xiàn)方法打印和調(diào)用換一個(gè)位置變可實(shí)現(xiàn)
def func1(n): # 從低分位開始打印 if n < 10: print(n) else: func(int(n / 10)) print(n % 10)
func(int(n / 10))這一步呢其實(shí)是先一直在調(diào)用,并沒有實(shí)現(xiàn)打印,等調(diào)用到最后一位的時(shí)候,就開始回溯,沒回溯一步,便打印一位數(shù)數(shù)來(lái)
補(bǔ)充拓展:使用python遞歸打印楊輝三角
啥也不說(shuō)了,上代碼吧
# 楊輝三角 # 1# 1 1# 1 2 1#1 3 3 1# ........ #傳入上一行,生成下一行def next_line(lst): newline = [1] for x in range(len(lst) - 1): newline.append(lst[x] + lst[x + 1]) newline.append(1) return newline #定義二位數(shù)組,存放;如果為了節(jié)約空間,也可以不用放二維數(shù)組def yanglst(n): yanghui = [] L = [1] for x in range(n): yanghui.append(L) L = next_line(L) return yanghui for I in yanglst(20): print(I)
以上這篇python 使用遞歸實(shí)現(xiàn)打印一個(gè)數(shù)字的每一位示例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. ASP中格式化時(shí)間短日期補(bǔ)0變兩位長(zhǎng)日期的方法2. 存儲(chǔ)于xml中需要的HTML轉(zhuǎn)義代碼3. javascript xml xsl取值及數(shù)據(jù)修改第1/2頁(yè)4. ASP刪除img標(biāo)簽的style屬性只保留src的正則函數(shù)5. asp知識(shí)整理筆記4(問(wèn)答模式)6. 怎樣才能用js生成xmldom對(duì)象,并且在firefox中也實(shí)現(xiàn)xml數(shù)據(jù)島?7. 小技巧處理div內(nèi)容溢出8. js的一些潛在規(guī)則使用分析9. ASP實(shí)現(xiàn)加法驗(yàn)證碼10. XML解析錯(cuò)誤:未組織好 的解決辦法
