当前位置: 首页 > 知识库问答 >
问题:

计算某个序列出现多少次的递归函数

宋飞文
2023-03-14

我正在编写一个递归函数,它以一个整数作为输入,它将返回123出现在整数中的次数。

例如:

打印(onetwothree(123123999123))

将打印出3,因为序列123在我输入函数的数字中出现了3次。

以下是我到目前为止的代码:

def onetwothree(x):
    count = 0
    while(x > 0):
        x = x//10
        count = count + 1
    if (count < 3):  #here i check if the digits is less than 3, it can't have the sequence 123 if it doesn't have 3 digits
        return 0
    if (x%10==1 and x//10%10 == 2 and x//10//10%10==3):
        counter += 1
    else:
        return(onetwothree(x//10))

这将继续打印“0”。

共有1个答案

柳飞飙
2023-03-14

我觉得你想得太多了。类似这样的解决方案应该起作用:

def onetwothree(n, count=0):
    if n <= 0:
        return count

    last_three_digits = n % 1000
    n_without_last_number = n // 10

    if last_three_digits == 123:
        return onetwothree(n_without_last_number, count + 1)
    else:
        return onetwothree(n_without_last_number, count)

print(onetwothree(123123999123))

产出:

3
 类似资料:
  • 我有一个任务,它获取一个int值“n”和一个Int Array作为参数,并且应该返回一个布尔值。该方法应该确定给定数组中有多少个“n”。如果数字是偶数,则方法应该返回true,否则返回false。如果数组的长度为0,它也应该返回“false”。 我设法做到的是: 老实说,我真的很困惑,我不知道该怎么办。我真的已经尽力了,但是我在这项任务上工作的时间越长,我就越不理解。感谢任何帮助,并提前感谢您!:

  • 我知道这个问题已经被问过很多次了,但是我的问题有点不同。这个任务要求我不验证一个字符串是否是回文——而是验证一个字符串中有多少回文(返回为“int”)。这应该使用迭代函数来完成 以下是我的迭代函数代码供参考: 我只是很难把它转换成递归函数。感谢所有帮助!

  • 问题内容: MySQL是否有一个函数可以计算一个字符串在另一个字符串或列中出现的次数?基本上我想要: 谢谢! 编辑: 我需要知道该字符串在某列中的每一行中出现了多少次。 问题答案: 一个明显但不可扩展的方法是这样的 您是否研究过MySQL中的全文本搜索?

  • Project Euler问题14给出以下问题: 为正整数集定义以下迭代序列: n→n/2(n为偶数) n→3n 1(n为奇数) 使用上述规则,从13开始,我们生成以下序列: 13→ 40→ 20→ 10→ 5.→ 16→ 8.→ 4.→ 2.→ 1. 可以看出,该序列(从13开始,到1结束)包含10个术语。虽然这还没有被证明(科拉兹问题),但人们认为所有的起始数字都以1结束。 100万以下的哪个

  • 问题内容: 如果我有这样的事情: 例如,如果我想将“ 0”的出现次数作为一个值进行计数而不必重复整个列表,那甚至有可能吗?如何? 问题答案: 正如我在评论中提到的,您可以在函数内使用生成器,如下所示: 或者,作为一种稍微优化和实用的方法,您可以使用如下功能: 基准测试: 请注意,虽然在这种情况下使用函数可能会得到更好的优化,但是为了获得关于这两种方法的全面而通用的想法,您还应该针对较大的数据集运行

  • 我的代码怎么了???我正试图写一个递归方法来求一个数中出现的数。编写一个递归函数,对一个正整数num进行编码,从另一个整数中提取一个数字,不进行负计数。如果数字显示的次数正好是数字,则函数返回true,否则返回false。 示例:输入:122231位:2计数:3输出:真