python之《类中递归实现整数最小因子的拆分》

类中递归,考虑到递归需要调用函数的本身,而使用self会发生很多报错,因此使用静态方法。

# -*- coding:utf-8 -*-
"""
功能:整数最小因子拆分
例如:2*2*2*3=24
     2*3=6
     2*2*2*2*2*5*5=800
要求:输入多组数值
"""
from functools import reduce

class IntNumber:
    
    def __init__(self,n):
        self.n = n
    @staticmethod
    def intSplit(n):
        """
        拆分整数(递归)
        """
        for i in range(2,int(n//2+1)):
            if n%i == 0:
                re_list.append(i)
                return IntNumber.intSplit(n/i)   
        #print(n)   #此处的为最后一次迭代的值
    def formatOutPut(self,re_list):
        """
        格式化输出
        """
        re_list.append(int(self.n/reduce(lambda x,y:x*y,re_list)))
        for i in range(1,len(re_list)):
            if i == len(re_list) - 1:
                print(f"{re_list[i]}",end="")
            else:
                print(f"{re_list[i]}*",end="")
        print(f"={self.n}")    
    
if __name__ == "__main__":        
    while True:
        re_list = [1] #此次变量不能定义在循环外。如果定义在循环外,
                      #则每次的值都会追加到列表中,从而引起结果的差异
        try:
            n = int(input())
            c = IntNumber(n)
            IntNumber.intSplit(n)
            c.formatOutPut(re_list)
        except:
            break 

注: 纸上得来终觉浅,绝知此事要躬行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值