是否存在y=f(x)形式的显式函数来表示给定的输入输出对?
是否存在显式函数y=f(x)表示给定的输入输出对?
给定输入输出对如下:
X Y ------- 1 1 2 1 3 3 4 1 5 3 6 5 7 7 8 1 9 3 10 5 11 7 12 9 13 11 14 13 15 15 16 1 17 3 18 5 19 7 20 9 21 11 22 13 23 15 24 17 25 19 26 21 27 23 28 25 29 27 30 29 31 31 32 1 33 3 34 5
你总结的递推规则准确:
- 若n为2的整数次幂(即n=2^N,N为非负整数),则f(n)=1
- 其余情况,f(n)=f(n-1)+2
- 基准条件f(1)=1
基于该递推规则,可推导出显式函数:
f(n) = 2*(n - 2^⌊log₂n⌋) + 1
或整理为更简洁的形式:
f(n) = 2n + 1 - 2^(⌊log₂n⌋ + 1)
验证说明:
⌊log₂n⌋表示对log₂n向下取整,即找到小于等于n的最大2的幂对应的指数。比如n=6时,⌊log₂6⌋=2,对应最大2的幂是2²=4;- 以n=6为例:2*(6-4)+1=5,与给定输出一致;
- 以n=15为例:2*(15-8)+1=15,与给定输出一致;
- 以n=32为例:2*(32-32)+1=1,符合规则;
该显式函数完全匹配所有给定的输入输出对。
内容的提问来源于stack exchange,提问作者Anubhav Sharma
相关产品推荐
相关产品推荐

