有人能告诉我函数的复杂性是什么吗?为什么?谢谢
def func1(n):
if n==0:
return (1)
if n==1:
return (1)
if n==2:
return (2)
return (n*func1(n-3))
n=int(input())
func1(n)
我认为复杂性是:“O(nlog n)”
该函数的时间复杂度为O(n),因为n-3是线性的。如果是除法运算,则为O(logn)。关于进一步的解释,你可以参考这个。
P、 与n本身相乘不会影响每个递归调用中的给定参数,因此,它根本不会影响时间复杂度。
好的,第一个for循环显然是。第一个迭代是,第二个迭代是。我想是不是就像那个次数?这意味着。我说对了吗? 编辑:(不是复制品)我知道大O是什么。我在一个具体的案例中询问了正确的评估。
比方说MD5或SHA-1?这两者的时间复杂度是多少?我试图在网上找到它,但它非常有限,我得到的只是它们都是O(n)。有人能进一步启发我吗?也许给我一个最坏的情况和最好的情况?
问题内容: 我正在写一个看起来像这样的python函数 因此它被称为 我以为列表的索引访问权限为,但是很惊讶地发现对于大型列表,这比我预期的要慢得多。 那么,我的问题是如何实现python列表,以及以下代码的运行时复杂度是多少? 索引: 从结尾弹出: 从一开始就弹出: 扩展列表: 对于额外的信用,剪接或任意弹出。 问题答案: 在python Wiki上 有一个非常详细的表格,可以回答您的问题。 但
Leetcode问题https://leetcode.com/problems/count-binary-substrings/ 该解决方案有效,但我很难提出递归解决方案的时间复杂度。 每当循环遇到s.charAt(i)!=s.charAt(i 1)时,它都会进行递归调用以展开,直到达到基本大小写或其他部分。 因为我遍历整个字符串,所以for循环是O(n)。但是如何确定将进行的递归调用的数量,因为
问题内容: 我当时在看这个pycon演讲,时间是34:30,发言人说,可以在中完成获取元素列表中最大的元素的操作。 那怎么可能?我的理解是,创建堆将是,但是其本身的复杂性是还是(以及(实际的算法是什么))? 问题答案: 扬声器在这种情况下是错误的。实际费用为。仅在可迭代的第一个元素上调用堆化。就是那个,但如果小于,则微不足道。然后,将所有剩余的元素一次通过添加到此“小堆”中。每次调用需要花费时间。
我写了一个函数来寻找目标值在给定数组中应该插入的位置。我们假设数组有不同的值,并按升序排序。我的解必须是O(log N)时间复杂度 此代码的复杂性是否为O(log N)?