为了账号安全,请及时绑定邮箱和手机立即绑定

有一个正整数n,a:可以除2, b:可以+1,可以减1。如何以最少步骤让n变成1

有一个正整数n,a:可以除2, b:可以+1,可以减1。如何以最少步骤让n变成1

浪漫小小青年 2016-09-11 23:05:19
有一个正整数n。a:可以除2,b:可以+1,可以-1,如何以最少步骤让n变成1
查看完整描述

2 回答

?
stone310

TA贡献361条经验 获得超191个赞

是不是问了2道一样的问题..

n=((n+1)/2)-((n-1)/2)

查看完整回答
反对 回复 2016-09-12
?
小王子抓猫咪

TA贡献9条经验 获得超7个赞

如果等于1,直接结束。否则,正整数n先除去2取余数,如果余数=1,那么将n-1。然后不断的除以2,最后就会得到1

if(n==1){
    return false;
}
if(n%2==1){
    n = n-1;
    while(n!=1){
        n = n/2;
    }
}else{
    while(n!=1){
        n = n/2;
    }
}


查看完整回答
反对 回复 2016-09-11
  • 2 回答
  • 0 关注
  • 1383 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信