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

打印所有可以等于给定数字的3个连续数字

蒋嘉颖
2023-03-14

如何编写一个递归回溯函数,在该函数中,它打印所有的N位数字,使数字中每3个连续数字的总和正好等于S,其中N小于或等于10,并且是从0到27。

代码:

def count(S):
    n = int(S)
    if n % 3 == 0:
        print(int(n / 3 - 1),int(n / 3),int(n / 3 + 1))
    else:
        print(None)
S = 27
count(S)

示例输出:

8 9 10

我很困惑如何递归地写这个。

共有1个答案

谭浩皛
2023-03-14

当前函数不是递归函数。要使其递归,基本上必须在执行count(n,s)的过程中调用count(n-1,s)。一种方法是:

  • 如果<代码>n

作为生成器函数,这可能看起来像这样。当然,您也可以将结果收集到列表中并返回它们,或者只是获取此类数字的计数并返回它。

def count(n, s):
    if n > 0:
        for x in count(n-1, s):
            for d in range(10):
                y = str(d) + x
                if len(y) < 3 or sum(map(int, y[:3])) == s:
                    yield y
    else:
        yield ""

for x in count(5, 15):
    print(x)

 类似资料:
  • 打印出小于给定数N的素数。对于奖励积分,您的解决方案应该在时间或更好的时间内运行。你可以假设N总是一个正整数。 输入样本: 程序应该接受文件名的路径作为其第一个参数。该文件中的每一行都是一个测试用例。每个测试用例将包含一个整数

  • 本文向大家介绍打印给定字符串的所有排列,包括了打印给定字符串的所有排列的使用技巧和注意事项,需要的朋友参考一下 打印给定字符串的所有排列是回溯问题的一个示例。我们将减小子字符串的大小以解决子问题,然后再次回溯以从该部分获得另一个排列。 例如,如果字符串是ABC,则所有排列将是ABC,ACB,BAC,BCA,CAB,CBA。 该算法的复杂度为O(n!)。这是一个巨大的复杂性。当字符串大小增加时,需要

  • 当R用科学符号将一个大数转换为字符串时,它包括所有有效数字,没有尾随零。有没有可能在C中用来完成这个? 我尝试了,但这似乎最多包含5个十进制数字。我还尝试使用设置更高的精度,但这将包括非有效数字和尾随零。 有没有一种方法可以让的行为增加5位数的限制?

  • 我目前正在开发一个程序来给用户输入整数,只打印那些包含数字1 2或3的。这是我到目前为止的代码: 所以我的方法很简单,我使用一个简单的bool递归来返回true或false,如果它确实包含1 2或3则为true,如果不包含则为false。我遇到的问题是,我在递归其他语句中没有返回任何内容。我知道我必须返回一些东西,但不确定要返回什么或是否有必要。我可以更改什么来使这个工作?

  • 所有要求要么打印最大的数组,要么打印长度最大的数组。我想打印那些连续数组的所有组合,这些数组可以被给定的数整除。我试图解决这个问题,并想出了这个解决方案 这段代码非常复杂,我可以想出一个更多的解决方案,使用两个复杂度为O(n^2)的循环。我们能以n^2倍的复杂度更好地做到这一点吗?