【发布时间】:2022-01-03 09:31:45
【问题描述】:
所以我正在尝试实现一个函数ptt(L:List[int],k:int),它返回一个嵌套列表,其中包含 L 的分区,其中列表的每个元素本身就是一个包含恰好 k 个元素的列表(除了最后一个可能少于 k 个元素的分区)。例如,当L = [1,2,3,4,5,6,7] 和k = 2 时,partition(L, k) 返回[[1,2],[3,4],[5,6],[7]]。这里还有几个例子。
assert ptt([1,2,3],2) == [[1,2],[3]]
assert ptt([1,2,3],3) == [[1,2,3]]
assert ptt([1,2,3,4],1) == [[1],[2],[3],[4]]
assert ptt([1,2,3,4],2) == [[1,2],[3,4]]
这是我对代码的尝试...
def ptt(L, k):
if (L == 0 or k == 0 or k > L):
return 0
if (k == 1 or k == L):
return 1
return (k * ptt(L - 1, k) +
ptt(L - 1, k - 1))
但是,这根本不起作用...我应该对我的代码进行哪些更改以确保它起作用??
【问题讨论】:
-
您应该首先向我们展示
countP是什么。 -
如果
L是您在问题中描述的列表,那么L == 0、k > L或L - 1之类的内容没有意义。 -
@MarkRansom 我的错,更改了函数名称,但没有更改其中的名称,顺便说一句已经编辑过
-
运行代码时会发生什么?你有任何错误吗?如果是这样,我建议使用谷歌搜索错误消息以获取有关如何修复它的一些提示。如果不是,结果如何?如果你没有得到你想要的结果,那么你需要调试你的代码。 This article 有一些很棒的技巧可以帮助您入门。
-
所以是递归函数?如果是这样,名称仍然是错误的。