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