计算一个嵌套循环的时间复杂度解决方案

计算一个嵌套循环的时间复杂度
for(i = 1; i<=n; i*=2)
  for(j=1; j<=i; j++)
       laugh++;
请解释一下这里laugh++执行了多少次?
------最佳解决方案--------------------
i=1时 执行1次;i=2时 执行两次;.... ;i=h时执行h次 所以总执行 h*(h+1)/2 其中h为logn 以2为底,向下取整
------其他解决方案--------------------
我知道我为什么错了
i不是从1,2,3...h 而是1 2 4 8...
设最终i=2^h 总次数应为2^0+2^1+2^2+...+2^h=2^(h+1)-1   h=logn 向下取整
当n刚好为2^h时  总次数为2n-1

总执行是h*(1+2(h次方))/2是不对的,自己验算n=1 n=2 n=4的情况 明显不对
再说 1+2(h次方)始终为奇数 当h也为奇数时(如h=1,3..) 根本不能整除2 显然是错的
------其他解决方案--------------------
答案我已经知道了。1楼的回复跟我刚开始分析时犯了同样的错误。总执行是h*(1+2(h次方))/2。其中h为logn以2为底。
------其他解决方案--------------------
是乘以(h+1)