小明从糖果盒中随意抓一把糖果,每次小明会取出一半的糖果分给同学们。
当糖果不能平均分配时,小明可以选择从糖果盒中(假设盒中糖果足够)取出一个糖果或放回一个糖果。
小明最少需要多少次(取出、放回和平均分配均记一次),能将手中糖果分至只剩一颗。
输入描述:
抓取的糖果数(<10000000000):
15
输出描述:
最少分至一颗糖果的次数:
5
输入
15
输出
5
备注:
解释:(1)15+1=16;(2)16/2=8;(3)8/2=4;(4)4/2=2;(5)2/2=1;
let a=Number(readline())
let res=[]
function f(n,m){
if(n==1){
res.push(m)
return 1
}
if(n%2==0){
m++
f(n/2,m)
}else{
m++
f(n-1,m)
f(n+1,m)
}
return 0
}
f(a,0)
res.sort((a,b)=>a-b)
console.log(res[0])
6473

被折叠的 条评论
为什么被折叠?



