优草派 > Python

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

罗西汉         优草派

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

Python数字1出现的次数怎么获取?Python如何获取序列中数字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出现次数”的全部内容了,希望对你有所帮助。

  • 微信好友

  • 朋友圈

  • 新浪微博

  • QQ空间

  • 复制链接

取消
5天短视频训练营
新手入门剪辑课程,零基础也能学
分享变现渠道,助你兼职赚钱
限时特惠:0元
立即抢
新手剪辑课程 (精心挑选,简单易学)
第一课
新手如何学剪辑视频? 开始学习
第二课
短视频剪辑培训班速成是真的吗? 开始学习
第三课
不需要付费的视频剪辑软件有哪些? 开始学习
第四课
手机剪辑app哪个好? 开始学习
第五课
如何做短视频剪辑赚钱? 开始学习
第六课
视频剪辑接单网站APP有哪些? 开始学习
第七课
哪里可以学短视频运营? 开始学习
第八课
做短视频运营需要会什么? 开始学习
【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。

客服热线:0731-85127885

湘ICP备19005950号-1  

工商营业执照信息

违法和不良信息举报

举报电话:0731-85127885 举报邮箱:tousu@csai.cn

优草派  版权所有 © 2024