【问题标题】:python recursive function callspython递归函数调用
【发布时间】:2023-04-04 02:37:01
【问题描述】:

我正在尝试实现一个递归函数,但遇到了一些困难,不胜感激。例如,让我们尝试创建一个名为 sliding 的函数来执行此操作

sliding("python", 2)
["py", "yt", "th", "ho", "on"]

也就是说,对于选定的整数,我们沿着字符串滑动,抓取适当长度的子字符串,然后将它们全部返回到一个列表中。

现在我可以(愚蠢地)尝试递归地定义它:

def sliding(string,k):
  return s if len(string)==k else [string[:k]].append(sliding(string[1:],k))

这将不起作用,主要是因为list.append() 发生在适当的位置并返回None。所以我的问题是 - 即使有很多 Python 方法出现,有没有办法执行这种递归函数?

这是我目前为止最好的,

def sliding(s,k):
    if len(s)==k:
        return s
    else:
        temp = [s[:k]]
        temp.append(sliding(s[1:],k) ) 
        return temp

这会导致

sliding("python",k=2)
['py', ['yt', ['th', ['ho', 'on']]]]

这显然不是理想的输出,但方向正确。还有什么其他方法可以做到这一点?感谢您的想法。

【问题讨论】:

  • 您知道+ 列表运算符吗?
  • 也许将 append 改为 extend

标签:
python
recursion