6
二进制搜索的步骤数
给定正整数输入,输出通过从1开始的二进制搜索找到输入所需的步数。 我们正在模拟对作为输入的整数的二进制搜索,其中模拟的搜索者可以反复猜测一个整数,并告知该整数是太高,太低还是正确。查找整数的策略如下: 令n为我们要查找的输入整数。 从1的猜测开始。(对于每个猜测,请增加步数(无论是否正确),如果猜测正确,则立即停止并输出总步数。) 反复将猜测加倍,直到猜测大于n(目标数字)。(或者,如果它是正确的,但是上面已经提到的我们的正确猜测规则已经涵盖了这一点。) 现在,设置大于n的2的幂的上限(即,刚猜到的数字),并在其正下方设置2的幂的下限。 反复猜测上限和下限的平均值(四舍五入)。如果它太高,则将其设置为上限。如果它太低,则将其设置为下限。此过程可确保最终导致正确的猜测。 这是一个示例,输入n = 21: 1 -> 2 -> 4 -> 8 -> 16 -> 32 -> 24 -> 20 -> 22 -> 21 \__________________________/ repeated doubling \________________________/ repeated averaging 由于这是code-golf,因此以字节为单位的最短代码将获胜。 以下是从n = 1到n = 100的所有输出: 1 2 4 3 6 5 6 4 8 …