微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python数字1出现的次数怎么获取?Python如何获取序列中数字1出现次数

python面试题之中有这么一个常见的题目,那就是给定一个整数n,然后获取1-n之间数字1的出现次数。这个题目主要考验的就是开发者对于算法以及基础运算符的使用程度,那么下文有这个问题的相关代码以及解题思路,感兴趣的话就往下看看吧。

一、解题思路

那么这个问题的主要关键点在于给定的n是几位数,个位数那么就只会有一个数字1。十位数如果是19就会有11个数字1,而每增加10就会多出来一个数字一。那么百位数以及往上的也是相同道理,不过它们会在百位上出现100次,十位上出现18次,个位上又出现9次。

那么根据这个就是可以得到对应的公式f(n) = 9 * f(n-1) + 10 ** (n-1),只需要去套用这个公式来编写代码就可以了。

二.代码实现

那么只需要去定义一个递归函数就可以了,该函数只接受数字n一个参数,不过该数字需要是整数。在该函数内先判断其是否小于等于0,如果为0就表示无效值直接将其返回。如果为数字1也直接返回1,因为1有且只会出现一次。

而其他的值就是要在函数内去将这个公式给编写出来,因为该函数调用自身,所以会将每次结果保存起来参与下次函数调用。最后当n的值变为传进来数值时,就将获取到的每位数相加起来返回即可得到数字1出现次数,详细代码如下:

def get_1_digits(n):
    if n <= 0:
        return 0
    if n == 1:
        return 1
    current = 9 * get_1_digits(n-1) + 10 ** (n-1)
    return get_1_digits(n-1) + current

以上就是关于“Python数字1出现的次数怎么获取?Python如何获取序列中数字1出现次数”的全部内容了,希望对你有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐