python 利用递归实现打印一个数字的每一位

python 利用递归实现打印一个数字的每一位

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)