• 【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

  • 相关阅读:
    document.URL 和 windows.location.href的区别
    毕向东udp学习笔记3多线程聊天
    毕向东udp学习笔记2
    毕向东udp学习笔记1
    udp 服务器界面监听
    android jni 总复习(转载)
    Android jni 编程4(对基本类型二维整型数组的操作)
    Android jni 编程3(对基本类型一维整型数组的操作)总结版
    Android jni 编程2(对基本类型一维整型数组的操作)
    Android jni 编程1(对基本类型字符串的操作)
  • 原文地址:https://www.cnblogs.com/chooperman/p/14543497.html
Copyright © 2020-2023  润新知