小招喵喜欢在数轴上跑来跑去假设它现在站在点 n 处,它只会 3 种走法分别是:
- 数轴上向前走一步,即 n=n+1
- 数轴上向后走一步,即 n=n-1
- 数轴上使劲跳跃到当前点的两倍即 n=2*n
现在小招喵在原点,即 n=0它想去点 x 处,快帮小招喵算算最快的走法需要多少步
没有思路怎么办?画个图列个表,找规律
- 奇数位置,从或者跳過去
那么,假设位置与步数存在函数关系可以归纳为
奇数与偶数分开处理,递归处理子问题+1/-1
相当于微调,2*n
相当于粗调从前向后分析,从后往前分析
因为当为奇数时,和都是偶数所以可以优化成。
// 负方向转换成正方向