我在算法设计方面有一个关于复杂度的问题。给定了一段代码,我需要计算该代码的复杂度。
伪代码如下:
for(i=1;i<=n;i++){
j=i
do{
k=j;
j = j / 2;
}while(k is even);
}
我已经尝试了这个算法,对于一些数字得到了不同的结果。例如,如果n=6,这个算法的输出如下:
i = 1 -> executes 1 time
i = 2 -> executes 2 times
i = 3 -> executes 1 time
i = 4 -> executes 3 times
i = 5 -> executes 1 time
i = 6 -> executes 2 times
它没有一个固定的主题,我应该如何计算它?
n
... 请看我的回答或者 @interjay 的! - Samuel Caillerie