Python 解决递归问题

Python 解决递归问题,python,Python,嗨,我一直在想如何像下面的例子一样操纵字符串 我有一根像这样的线 aa_bb_cc_dd 从那我想要 aa/aa_bb/aa_bb_cc/aa_bb_cc_dd 我需要这是递归的,这就是我遇到麻烦的地方。 有什么办法吗?我想你需要: a = "aa_bb_cc_dd" # split the string on `_` x = a.split("_") op = "" for i in range(len(x)): op = op + "_".join(x[:i+1])+"/" p

嗨,我一直在想如何像下面的例子一样操纵字符串

我有一根像这样的线

aa_bb_cc_dd
从那我想要

aa/aa_bb/aa_bb_cc/aa_bb_cc_dd
我需要这是递归的,这就是我遇到麻烦的地方。 有什么办法吗?

我想你需要:

a = "aa_bb_cc_dd"

# split the string on `_`
x = a.split("_")

op = ""
for i in range(len(x)):
  op = op + "_".join(x[:i+1])+"/"

print(op.strip("/"))
输出:

aa/aa_bb/aa_bb_cc/aa_bb_cc_dd

递归解决方案:

def recursive_fn(s, start_idx):
    if start_idx >= len(s):
        return ''
    return s[:start_idx+2] + '/' + recursive_fn(s, start_idx + 3)

result = recursive_fn('aa_bb_cc_dd', 0)[:-1]
print(result)

一个简单的列表Comp,试试这个

inp_str = "aa_bb_cc_dd"
inp_list = inp_str.split("_")
print '/'.join(['_'.join(inp_list[:i]) for i in range(1,len(inp_list)+1)])

Results: aa/aa_bb/aa_bb_cc/aa_bb_cc_dd

希望这对你有帮助:)

不过这不是一个递归解决方案。是的,我知道我认为我需要它,但我想不是。@anoordesai在这里使用递归可能是overkill@AkshayNevrekar同意,但问题是“我需要这是递归的”,这让我相信这是一个要求。