时间:2021-05-22
我就废话不多说了,直接上代码吧!
def func(n): # 从高分为开始打印 lengh = len(str(n)) # 确定数字的长度 x = 10**(lengh-1) # 确定数字的分位 if n < 10: print(n) else: print(int(n/x)) func(n % x) # 对n的x分位取余得到def func1(n): # 从低分位开始打印 if n < 10: print(n) else: print(n % 10) func(int(n / 10))上述凶高分位打印的时候,会出现0无法打出的现象,现在加一个判断做一个优化
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)当然也有同学有跟简单的方法来写,但是需要一定的理解力,就是把低分为的实现方法打印和调用换一个位置变可实现
def func1(n): # 从低分位开始打印 if n < 10: print(n) else: func(int(n / 10)) print(n % 10)func(int(n / 10))这一步呢其实是先一直在调用,并没有实现打印,等调用到最后一位的时候,就开始回溯,没回溯一步,便打印一位数数来
补充拓展:使用python递归打印杨辉三角
啥也不说了,上代码吧
# 杨辉三角 # 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 #定义二位数组,存放;如果为了节约空间,也可以不用放二维数组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 使用递归实现打印一个数字的每一位示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
概要本文只是简单的介绍动态规划递归、非递归算法实现案例一题目一:求数组非相邻最大和[题目描述]在一个数组arr中,找出一组不相邻的数字,使得最后的和最大。[示例
本文实例讲述了Python基于递归实现电话号码映射功能。分享给大家供大家参考,具体如下:问题电话按键上面的每个数字都对应着几个字母,如果按下一个数字键代表输入一
本文为大家分享了Python实现全排列的打印的代码,供大家参考,具体如下问题:输入一个数字:3,打印它的全排列组合:123132213231312321,并进行
在python中要产生一个数字序列,最快的方法就是使用range和linspace函数,但是这两者不太一样,但总的来说实现的效果是一致的,都能获取一个数字序列。
由于数字无法用一个整形变量存储,很自然的想到用字符串来表示一串数字。然后按照乘法的运算规则,用一个乘数的每一位乘以另一个乘数,然后将所有中间结果按正确位置相加得