Не делайте z=len(z)
, потому что вам нужен исходный z
, чтобы перейти к рекурсивному вызову. Вместо этого выполните zl=len(z)
, измените if
на zl==0
и сделайте свою последнюю строку return counter(z[1:], c+1)
. Квадратные скобки с двоеточием являются оператором среза; "abc"[1:]=="bc"
.
... кстати, технически вам даже не нужно получать len()
из z
, так как python рассматривает пустые списки как ложные в выражениях if. Таким образом, ваш код может быть просто:
def counter(z, c=0):
if not z: return c
return counter(z[1:], c+1)