一个计算器,只有-1和*2键,任意输入两个数a,b,求几次可以由a得到b

一个计算器,只有-1和*2键,任意输入两个数a,b,求几次可以由a得到b
自己瞎写的,有点乱
判断a与b的大小关系,还要涉及到b为奇数还是偶数

   #include<iostream>
   using namespace std;

   int jisuan(int a, int b)
   {
     int i=0;   
     if (a > b)
     {//a>b直接减
         i = i + (a - b);
         // cout << i << "  4" << endl;调试用的
         return i;
     }
      if ((b % 2) && (b > a))
      {//b为奇数且b>a,此时就要先把b变成偶数了
         i++;
         //cout << i << "  1" << endl;调试用的
         b += 1;//2a-1=b,2a=b+1所以加1         
      }
      if ( a < b)
      {//a<b,-1不可能得到b,所以只能使用*2,
       //但是在程序实现时不能改变a的值,可以倒过来想,递归计算(a,b/2)
        i++; 
        //cout << i << "  2" << endl; 调试用的
        i=i+jisuan(a, b / 2);
      }
      return i; 
     }

     int main()
    {
     int a, b,cishu;
     cout << "输入a与b:" << endl;
     cin >> a >> b;
     cishu=jisuan(a, b);
     cout << cishu << endl;
     system("pause");
     }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值