
每次递归将金块分为两半,递归层数为O(log₂n)的原因是因为问题的规模每次都减半。这是分治算法的特点之一。
让我们来详细解释一下为什么递归层数为O(log₂n):
这个过程可以表示为:n → n/2 → n/4 → n/8 → ... → 1。
当问题规模变为1时,递归停止,因此总共需要进行多少次递归呢?我们可以通过求解n除以2的幂等于1的次数来得到答案。这相当于求解以下方程:
n / 2^k = 1
解这个方程可以得到k = log₂n,因此递归的层数为O(log₂n)。
因此,每次递归将问题规模减半,导致递归层数为对数级别的O(log₂n)。这就是为什么在分治算法中每次将问题分为两半时,递归层数为O(log₂n)的原因。