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))这一步呢其实是先一直在调用,并没有实现打印,等调用到最后一位的时候,就开始回溯,没回溯一步,便打印一位数数来