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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值