String Druid中的Cl0sed函数

String Druid中的Cl0sed函数,string,binary,String,Binary,我正在尝试编写一个函数,它将一个8字符的二进制字符串s和一个正数作为整数n,并打印一个由n个二进制数组成的序列,这些二进制数根据我的递增函数递增 如何编辑函数以便打印这些函数?假设所有其他代码都正确,递归代码中有五个问题 首先,您试图使用递归调用count返回的值。但是您在任何地方都没有return语句,那么这个值可能是什么呢?因此,inc*cnt将尝试将字符串乘以None,并引发TypeError。如果您查看代码,就不需要向上返回任何内容计数只需获取一些值,打印一些内容,然后再次调用自身。因此

我正在尝试编写一个函数,它将一个8字符的二进制字符串s和一个正数作为整数n,并打印一个由n个二进制数组成的序列,这些二进制数根据我的递增函数递增


如何编辑函数以便打印这些函数?

假设所有其他代码都正确,递归代码中有五个问题

首先,您试图使用递归调用
count
返回的值。但是您在任何地方都没有
return
语句,那么这个值可能是什么呢?因此,
inc*cnt
将尝试将字符串乘以
None
,并引发
TypeError
。如果您查看代码,就不需要向上返回任何内容<代码>计数只需获取一些值,打印一些内容,然后再次调用自身。因此,只需忽略它返回的
None

接下来,您将尝试递增
s[-1]
。但是
s
是一个字符串,所以这将是最后一个字符。你想“递增”整个字符串,对吗?所以只要通过
s

接下来,您将尝试使用
s[:-1]
来调用自己。同样,
s
是一个字符串;这将尝试递增该字符串的前7位,然后递增前6位,依此类推。你为什么要那样?要增加的是刚刚增加的值。也就是说,与您刚才存储在
inc
中的内容相同。所以只要通过
inc

接下来,在递归调用之后执行
print
。这意味着您将调用打印第二个和以后的值的函数,然后打印第一个值。等等所以他们会以相反的顺序出现。如果您想先输入第一个值,请在递归调用之前打印

最后,您显然希望打印原始值和下一个4,而不是没有原始值的下一个5。因此,您必须打印出递增前的值,而不是递增后的值

因此,对代码的最小更改是:

def count(s, n):
    if n == 0:
        return
    else:
        inc = increment(s)
        print(s)
        count(inc, n-1)