【发布时间】:2021-12-21 13:36:34
【问题描述】:
假设我有以下代码,我的任务是找到重复T(n) 及其最差运行时间。如果 n 是列表的长度,则该值。
在这种情况下,我们有 3 个递归,mystery(mylist[:len(mylist)-t-1])、mystery(mylist[t:len(mylist)- 1]) 和 mystery(mylist[:len(mylist)-t-1])。
def mystery(mylist):
if len(L) <= 1:
return
if len(mylist) >= 3:
t = len(mylist) // 3
mystery(mylist[:len(mylist)-t-1])
mystery(mylist[t:len(mylist)- 1])
mystery(mylist[:len(mylist)-t-1])
对于递归的情况,我的观察是因为递归是在一起的,所以递归是:
T(n) = T(floor(2n/3)) + T(floor(n/3)) + T(floor(2n/3)) = 2T(floor(2n/3)) + T(floor(n/3))
现在是困难的部分,要弄清楚 f(n),所以我扩展了递归 T(n),我得到了越来越多的 T(n)s。我怎样才能算出 f(n)?
对于基本情况,T(0) 和 T(1) 为 1,因为第一个 if 语句和 T(2) = 0,因为 n=2 没有 if 语句。
我的评估是否正确?
谢谢!
【问题讨论】:
-
最好在您遇到无法解决的特定编程问题、寻求指导的一般性问题不符合 SO 的目标时使用此站点。
-
对我来说似乎是主题。他们正在尝试推导算法的递归关系,并且已经展示了一种尝试。
-
大家好,这是一个特定的编程问题。我已经尝试解决这个问题并询问我的理解是否有错误。谢谢!
-
我只是将 itprorh66 报告给 Stackoverflow,因为他一直说它不适合我之前 3 个问题中的特定编程问题,尽管 3 个问题中的每一个都是一个特定问题,我没有我的思维过程,只需要专家检查思维过程是否正确。
标签: python recursion logic recurrence master-theorem