我有这个周期:
for(i = 0; i < n; i ++) {
if(i % 5 == 1 && i % 3 == 1) {
function();
}
}
如何在不运行此代码的情况下计算function()的调用量?
答案 0 :(得分:3)
我从你需要一些Theta表达式的complexity-theory
标签中取出。 if导致你的函数每十五次执行一次,这是一个常数因子,所以执行次数仍然是Theta(n)。
答案 1 :(得分:1)
条件有两个表达式。第一个表达式每5次迭代成立,第二个表达式每3次迭代成立。他们一起每15轮就拥有真正的apprx并且function()
被召唤。
答案 2 :(得分:0)
查看条件所适用的i
的值:
现在,如果你有条件i % 5 == 0 && i % 3 == 0
,它必须是15(lcm(3,5)
)的倍数,那么条件将在每第15次迭代时保持不变。从那以后你可以自己得出这种关系。
答案 3 :(得分:0)
i = 15*k +1
时,if语句为真,其中k为整数。对于(0,n)内的总数,由k = floor((n-1)/15) + 1
给出,例如n = 31,k = floor((31-1)/15) + 1 = 3
,即(1,16,31)