一个计算器,只有-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");
}