递归地复制单词中的字母 - ' abcd' - > '为aabbcc'

时间:2016-02-02 12:52:50

标签: string recursion duplicates letters

我刚学会了什么递归,我试图找到一种方法来递归复制一个单词中的字母。这只是一种练习方式。如果没有递归就有更好的方法,我愿意接受任何反馈。但是,在我回到课程作业和演讲幻灯片之前,我主要是试图找到一个解决方案,以便阐明递归。它不会两次打印最后一封信。

我的代码:

https://yourdomain.com/

2 个答案:

答案 0 :(得分:0)

这不需要递归。

echo "abcd" | perl -pe 's/(.)/$1$1/g'

输出:

aabbccdd

答案 1 :(得分:0)

您的解决方案也无法重复已经翻倍的信件。例如," aabc"应该回归" aaaabbcc",对吗?你特别避免这种情况,返回" aabbcc"代替。

更正是消除该测试,促进对 else 子句的递归调用:

def makeDups(young):
    if len(young) <= 1:
        return 2 * young
    else:
        return 2 * (young[0]) + makeDups(young[1:])

最后,最后一次Pythonic更新:您的代码足够干净,可以将其转换为单个语句:

def makeDups(young):
    return 2 * young if len(young) <= 1 \
        else 2 * (young[0]) + makeDups(young[1:])