设n和m是两个正整数,求它们的乘积
如果n是偶数
如果n是奇数
算法停止的条件
递归实现
#include<iostream>
using namespace std;
int rus_mul1(int n, int m)//递归实现
{
if(n == 1)
return m;
else if(n % 2 == 0)
{
cout<<n/2<<" * "<<2*m<<endl;
return rus_mul1(n / 2, 2 * m);
}
else
{
cout<<(n - 1)/ 2<<" * "<<2 * m<<" + "<<m<<endl;
return rus_mul1((n - 1)/ 2, 2 * m) + m;
}
}
int rus_mul2(int n, int m)//迭代实现
{
int count = 0; //存储加数
while(n != 1){
if(n % 2 == 0)
{
n /= 2;
m *= 2;
}
else
{
count += m;
n = (n - 1)/2;
m *= 2;
}
}
return count + m;
}
int n, m;
int main()
{
cin>>n>>m;
cout<<rus_mul1(n, m)<<endl;
cout<<rus_mul2(n, m)<<endl;
return 0;
}