Python不返回任何内容而不是字符串输出

时间:2019-12-01 15:05:54

标签: python

我编写了一些有关在递归函数中收缩字符串的代码。

当输入字符串结束时,它返回输出。

它在功能上显示正确的内容,但返回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'

我找不到原因以及如何解决此问题

1 个答案:

答案 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)