python 使用递归实现打印一个数字的每一位示例
我就废话不多说了,直接上代码吧!
deffunc(n): #从高分为开始打印 lengh=len(str(n))#确定数字的长度 x=10**(lengh-1)#确定数字的分位 ifn<10: print(n) else: print(int(n/x)) func(n%x)#对n的x分位取余得到 deffunc1(n): #从低分位开始打印 ifn<10: print(n) else: print(n%10) func(int(n/10))
上述凶高分位打印的时候,会出现0无法打出的现象,现在加一个判断做一个优化
deff(n): num_len=len(str(n)) ifn<10: print(n) #returnn else: print(int(n/(10**(num_len-1))),end='') mod=n%(10**(num_len-1)) dif_value=num_len-len(str(mod)) ifdif_value>1: foriinrange(1,dif_value): print(0,end='') f(mod) f(200400900000)
当然也有同学有跟简单的方法来写,但是需要一定的理解力,就是把低分为的实现方法打印和调用换一个位置变可实现
deffunc1(n): #从低分位开始打印 ifn<10: print(n) else: func(int(n/10)) print(n%10)
func(int(n/10))这一步呢其实是先一直在调用,并没有实现打印,等调用到最后一位的时候,就开始回溯,没回溯一步,便打印一位数数来
补充拓展:使用python递归打印杨辉三角
啥也不说了,上代码吧
#杨辉三角 #1 #11 #121 #1331 #........ #传入上一行,生成下一行 defnext_line(lst): newline=[1] forxinrange(len(lst)-1): newline.append(lst[x]+lst[x+1]) newline.append(1) returnnewline #定义二位数组,存放;如果为了节约空间,也可以不用放二维数组 defyanglst(n): yanghui=[] L=[1] forxinrange(n): yanghui.append(L) L=next_line(L) returnyanghui forIinyanglst(20): print(I)
以上这篇python使用递归实现打印一个数字的每一位示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。