递归乘法
递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。
示例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; }

浙公网安备 33010602011771号