如何使用递归混合2个字符串并将它们作为1'交错'字符串返回?

时间:2016-05-29 00:43:12

标签: string python-3.x recursion

我写了这个程序:

def mix(a,b):

    if len(a) != len(b):
        return
    else:
        return a[0]+b[0]+a[1]+b[1]+a[2]+b[2]+a[3]+b[3]

这是做什么的,取两个字符串并将它们“交织”在一起。例如,如果我选择taco作为字符串1而bowl作为字符串2,则会返回tbaocwol。如果字符串的长度不同,我们将返回。

我遇到的问题是我的else return语句中的递归。我怎么写它才能接受任何长度的字符串而不限于2,3或4个字母?我在原始代码中对索引进行了硬编码,以便在我查看结果时查看结果,但我对此感到很沮丧。

我不想使用任何循环或任何字符串处理函数。 只有我愿意使用的是切片和/或全局变量。 我也不想使用.remove()index.replace()

注意:我已经看到了类似的问题,但它是在java中,我无法弄清楚python的等效性。

2 个答案:

答案 0 :(得分:2)

您可以传递字符串的切片版本。

def mix(a,b):
    if len(a) != len(b):
        return
    elif not a:
        return ""
    else:
        return a[0] + b[0] + mix(a[1:], b[1:])

一些测试用例:

>>> print(mix("Hello", "abcde"))
Haeblcldoe
>>> print(mix("Guten Tag", "ihgfedcba"))
Giuhtgefne dTcabga
>>> print(mix("Ni Hao", "Hello "))
NHie lHlaoo

答案 1 :(得分:1)

def mix(a,b):
    if len(a) != len(b):
        return ''
    if len(a) == 0:
        return ''
    else:
        return mix(a[:-1], b[:-1])+a[-1]+b[-1]

这应该可以解决问题!