我编写了一些有关在递归函数中收缩字符串的代码。
当输入字符串结束时,它返回输出。
它在功能上显示正确的内容,但返回None,而不是答案
def rec_encyption(input, i, cnt, output):
if i + 1 == len(input):
print(output)
return output
elif input[i] == input[i + 1]:
rec_encyption(input, i + 1, cnt + 1, output)
else:
output = output + input[i] + str(cnt)
rec_encyption(input, i + 1, 1, output)
def do_rec_encyption(input):
n = rec_encyption(input + " ", 0, 1, "")
print(n)
return n
print(do_rec_encyption("aaabbcccccca"))
我在VSCode中运行此代码,结果是这样的:
a3b2c6a1
没有
没有
这意味着rec_encyption
返回None,而不是'output'
我找不到原因以及如何解决此问题
答案 0 :(得分:1)
在else中使用return
def rec_encyption(input, i, cnt, output):
if i + 1 == len(input):
print(output)
return output
elif input[i] == input[i + 1]:
return rec_encyption(input, i + 1, cnt + 1, output)
else:
output = output + input[i] + str(cnt)
return rec_encyption(input, i + 1, 1, output)