【发布时间】:2018-11-10 15:49:43
【问题描述】:
我定义了一个返回位数的递归函数:
def counter(z, c = 0):
z = len(z)
if z == 0:
return c
else:
return counter(z - 1,c + 1)
我知道在第二次调用时,该函数会将整数 3 的长度分配给 z。如何将前一个字符串减去一个字符,以便我的函数计算每个字符?
【问题讨论】:
-
字符串像数组或列表一样被索引。例如。
z[:-1]表示除最后一个字符之外的所有字符。 -
可能
if not z: return c作为你的条件,return counter(z[1:], c+ 1)作为你的递归......(虽然未经测试)......虽然为每个字符调用len是不是有点奇怪? -
z是一个整数吗?您不能在 int 上调用len。 (如果z是您可以调用len的东西,那么在应该递归计算其输入长度的函数中使用len似乎很奇怪。) -
@user2357112 是的...我觉得
z应该是字符串,if not z应该是返回条件,z[1:]在递归调用中 - 似乎不适合使用len这里... -
@JonClements 我还能在哪里将 z 的长度分配给它自己?