递归乘法

递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。

示例1:

输入:A = 1, B = 10
输出:10
示例2:

输入:A = 3, B = 4
输出:12
提示:

保证乘法范围不会溢出

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/recursive-mulitply-lcci

 

思路:这道题目跟 a * b 非常的相似,不可以使用乘号,那么我们就使用位运算进行计算

题目要求我们使用递归来实现 

  1.递归参数:  结果 res  ,参数 a ,参数b

  2.递归的终止条件  当 b = 0 的 时候计算结束,直接返回

  3.递归的实现内容    进行结果值的计算

代码:

  

#include<bits/stdc++.h>
using namespace std;


void back(int& res, long long a,long long b){
    if(b == 0){
        return;
    }
    if(b&1) res+=a;    //如果b为奇数结果值相加 
    back(res,a+a,b>>1);   //递归处理 
}
int main(){
    int a,b;
    cin>>a>>b;
    int res = 0;
    back(res,a,b);
    cout << res << endl; 
    return 0;
}

 

posted @ 2021-11-01 17:51  爱慕6  阅读(141)  评论(0)    收藏  举报