刚开始数据结构。坚持这个:
我在使用内部while和for循环时遇到问题,因为如果N数是奇数或偶数,它会发生变化。
我最好的情况是 - 内部for循环运行logn(base 2)次, 和while循环 - 登录时间(基数2)
会喜欢一些帮助。
答案 0 :(得分:1)
专注于do_something()
被调用的次数。
外部for
循环显然运行n
次,其中的while
循环独立于变量i
。因此,do_something()
被称为n
循环中调用它的总次数的while
。
在while
循环的第一次传递中,do_something()
被调用一次。第二次,它被调用两次,第三次被调用,4次,等等。
因此调用它的总次数
1 + 2 + 4 + 8 + ... + 2^(k-1)
其中k
最大为2^(k-1) <= n
。
上述总和有一个标准公式。然后使用它,然后根据k
求解n
,并将结果乘以外部循环中的n
,然后就完成了。