想要使用RECURSION更快的解决方案

时间:2018-11-29 22:15:40

标签: python recursion coding-efficiency

问题:有些人喜欢用单词“ LOL”向Internet聊天室发送垃圾邮件。这通常会惹恼其他一些用户, 将通过宣布“再有一个大声笑,我出去了”来回应。还有其他用户会通过发布“另外一个 “再有一个LOL,我要退出”,然后我就退出”,依此类推,嵌套越来越多的“再有{X},我就退出”层。 完成递归lol()函数,该函数采用一个正(非零)整数参数表示嵌套级别

(“再哈哈,我要出去了”代表一层嵌套)。该函数返回一个字符串,其中包含适当的- 上面字符串的嵌套版本。例如,lol(3)将返回字符串(一个又一个又一个大声笑,我出去了,我出去了,我出去了。)

我的解决方案:

def lol(y):
middle = "LOL"
part1 = " One more "
part2 = " and I'm out"
templist = []
answer = ""
if y == 0:
    print ("LOL")
else:
    for i in range(y):
        middle = middle + part2
    for j in range(len(middle)):
        templist.append(middle[j])
    templist.reverse()
    for k in range (y):
        templist.append(part1)
    templist.reverse()
    for h in range(len(templist)):
        answer = answer + templist[h]
print (answer)

我想看看一种使用递归的解决方案。然后我很好奇看到最有效的解决方案。谢谢!

2 个答案:

答案 0 :(得分:5)

def f(levels_left):
    if levels_left==0:
        return 'LOL'
    return 'One More ' + f(levels_left-1) + ' And I\'m Out'

答案 1 :(得分:1)

不是递归的,但仍然不需要任何列表:

def lol(y):
    return 'One more ' * y + 'LOL' + ' and I \'m out' * y

print (lol(3))

输出:

One more One more One more LOL and I 'm out and I 'm out and I 'm out