我知道递归关系的公式是T(n)= aT(n/b)+ f(n).考虑到这个等式,我知道如何解决BigO问题.我的作业问题让我写了一个递归函数来计算列表中的节点数,我做了但后来让我写了一个递归关系.这是我的代码:
int count(ListNode *l)
{
if(!l) return 0;
if(!l->next) return 1;
return 1 + count(l->getNext());
}
Run Code Online (Sandbox Code Playgroud)
但我完全迷失了如何创建/制定我自己的递归关系公式...我如何找到一个或b ....我不知道从哪里开始.如何为此函数编写递归关系?谢谢.
我对如何解决递归关系有一些问题。
T(n) = T(n/2) + log2(n),T(1) = 1,其中 n 是 2 的幂
这是一个家庭作业问题,所以不要只给我答案。我只是想知道如何开始这个问题。
在课堂上,我们复习了大师定理。但我认为这不是解决这种特殊关系的最佳方式。
我真的不知道如何开始这个问题......我应该去吗
T(n) = T(n/2) + log_base2(n)
T(n/2) = [T(n/4)+log_base2(n/2)]
T(n) = [T(n/4)+log_base2(n/2)] + log_base2(n)
Run Code Online (Sandbox Code Playgroud)
继续我的工作,得到一些我能看到的东西是一个基本的等式?
我最近问了这个问题,获取日期时间对象列表并解析:
每周重复:与相同的 dayOfWeek、小时、分钟匹配的日期集合,以获取一组列表,其中列表中的每个项目都与该 Key 匹配,其中:
关键是 DayOfWeek + 小时 + 分钟的串联
每月重复:匹配相同 weekOfMonth、dayOfWeek、小时、分钟的日期集合,以获取一组列表,其中列表中的每个项目都与该 Key 匹配,其中:
关键是 WeekOfMonth + DayOfWeek + 小时 + 分钟的串联
这两个都工作得很好。
我现在有一个额外的要求,我正在努力支持双周复发(每隔一周)。我正在尝试找出匹配的正确密钥,因为上面的其他用例都有逻辑计算密钥,但无法计算出每隔一周的算法/密钥
n
函数的输入在哪里可以是任何整数.
i = n, total = 0;
while (i > 0) {
for (j=0; j<i; j++)
for (k=0; k<i; k++)
total++;
i = i/4;
}
Run Code Online (Sandbox Code Playgroud)
这个函数的时间复杂度是多少?
我需要解决复发
T(n) = 2T(n 1/2 ) + 1
我需要找到渐近时间复杂度。我正在使用递归树方法,但我被卡住了。我知道答案是 Θ(log n),但我不知道如何得出这个结论。请问这个复发怎么解决?
我需要解决这个递归函数:f(n)= 5*f(n-1) - 2*f(n-2),其中f(0)= 1且f(1)= 2.我写了下面的代码,但它没有给出正确的答案 - 例如,当n = 4时输出164,尽管正确的答案是26(假设我正确地做了数学运算).
public static int recurFunction(int n) {
if(n == 0) {
return 1;
} else if(n == 1) {
return 2;
} else {
n = ((5 * recurFunction(n - 1)) - (2 * recurFunction(n - 2)));
return n;
}
}
Run Code Online (Sandbox Code Playgroud) 我知道如何使用Master方法解决递归关系.另外我知道如何解决下面的重现:
T(n)= sqrt(n)*T(sqrt(n))+ n
T(n)= 2*T(sqrt(n))+ lg(n)
在上述两次递归中,递归树的每个级别都有相同的工作量.并且递归树中总共有log log n级别.
我在解决这个问题时遇到了麻烦:T(n)= 4*T(sqrt(n))+ n
编辑: 这里n是2的幂
我正在尝试使用主定理及其重现概念来解决递归关系以找出算法的复杂性,我如何证明:
T(n) = T(n/2)+O(1)
是
T(n) = O(log(n)) ?
任何解释都会得到赞赏!
我需要找到涉及重现的算法的复杂性:
T(n) = T(n-1) + ... + T(1) + 1
T(n)
是解决大小问题所需的时间n
.
master方法在这里不适用,我不能猜测使用替换方法(我不想使用替换方法).我留下了递归树方法.
由于每个节点的子节点数不是常数,我发现很难跟踪每个节点的贡献.底层模式是什么?
我知道我必须在树中找到节点的数量,其中每个节点(k
)为其子节点具有从1到1的所有节点k-1
.
是否也可以找到T(n)
给定公式的确切时间?
鉴于再次发生:
A(n) = A(n-1) + n*log(n)
.
我如何找到时间复杂度A(n)
?
我们有一个数组 A[1...n]。反演是当 i < j 但 A[i] > A[j] 时。我想要一种方法来描述长度为 n 的数组 A 可以具有的最大反转次数(考虑起始索引是 1 而不是 0)。
我试图找到一种模式,但似乎无法为 n 提出一个通用公式。
at n=3 we have 3 possible inversions
at n=4 we have 7 possible inversions
at n=5 we have 10 possible inversions
at n=6 we have 15 possible inversions (10 + 5)
at n=7 we have 21 possible inversions (15 + 6)
at n=8 we have 28 possible inversions (21 + 7)
Run Code Online (Sandbox Code Playgroud)
似乎有复发,nb inversions for n = nb inversion for …
请任何人都可以帮我解决这个问题:使用迭代方法 T (n) = T (n - 1) + (n - 1) 解决
并证明 T (n) ?? (n²)
拜托,如果你能一步一步地解释,我将不胜感激。