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