zoukankan      html  css  js  c++  java
  • 【python解题笔记20210316】CodeWars:Persistent Bugger

    题目

    内容:编写一个函数,入参为大于0的正整数,将该数的每位数相乘后得出1个新的正整数,再次将新的正整数每位数相乘,依次循环至结果为10以下的数,计算结束后,该函数出参为上述计算的次数

    链接:https://www.codewars.com/kata/55bf01e5a717a0d57e0000ec/train/python

    截图:

    解题

    思路:

    1、分析每次计算一轮后得出的新整数要进入下一轮计算,因此引入递归函数;

    2、使用str函数将入参正整数转换成字符串,再使用list函数将每位数转成每个单独的数字,再使用int将列表中的字符串数字,转成列表中的数字,以此得出每次计算所需的每位数字;

    3、将每轮需计算的各位数字相乘得出一轮计算的结果;

    4、一轮计算后,返回计算的次数1,并且将一轮计算的结果作为入参,再次递归调用计算函数,直到计算结果为个位数为止;

    5、多轮计算后得出递归计算的总次数;

    结果:

      

    源码:

    def persistence(n):
        """
        递归函数,用于求解Persistent Bugge,例如
        persistence(39) => 3  # Because 3*9 = 27, 2*7 = 14, 1*4=4
                           # and 4 has only one digit.
        persistence(999) => 4 # Because 9*9*9 = 729, 7*2*9 = 126,
                           # 1*2*6 = 12, and finally 1*2 = 2.
        persistence(4) => 0   # Because 4 is already a one-digit number.
        :param n: 入参,正整数
        :return: 一轮计算后的正整数以及迭代的次数
        """
        if n<=9:       #递归终止条件,如果是个位数则终止
            return 0
        else:
            numbers = [int(i) for i in list(str(n))]    #先使用str函数将入参转换成字符串,再使用list函数将每位数转成每个单独的数字,再使用int将列表中的字符串数字,转成列表中的数字
            print(numbers)
            result = 1
            for i in numbers:     #循环计算列表中的每位数字相乘的结果
                result = result * i
                pass
            return 1+persistence(result)   #递归调用此函数,将一轮计算的结果作为入参

    知识点

    1、递归函数的使用,重点是递归结束条件,递归执行的次数在每次递归return结果加1。

    2、str()函数的使用,将任意输入转换成字符串。

    3、list()函数的使用,将字符串转成内容为字符串的列表。

    4、int()函数的使用,将字符串转换成数字。 

    参考资料:

    https://www.php.cn/python-tutorials-423731.html

    https://www.cnblogs.com/sea-stream/p/9484024.html

    https://blog.csdn.net/ruanxingzi123/article/details/82658669

  • 相关阅读:
    97. 交错字符串-7月18日
    如何判断一个区块链项目的好坏?
    不知道这10点,千万别用SaaS
    数字人民币应用的五大猜想!你最关心哪个?
    什么是人工智能核心?这2个功能上线
    大数据的七大核心具体价值
    机器学习操作正在兴起
    每个大数据架构师都需要的6个基本技能
    数据之美:可视化会给你意想不到的答案!
    如何采用人工智能创建自动化运营的数据中心
  • 原文地址:https://www.cnblogs.com/chooperman/p/14543497.html
Copyright © 2011-2022 走看看