当前位置:   article > 正文

力扣面试题08.05递归乘法[简单]含快速幂解法和优化解法_int multiply(int a, int b) { a * b; }

int multiply(int a, int b) { a * b; }

 基础递归|快速幂思想递归|最小优化基础递归、

对于快速幂的思想我前些天讲过,可以去我的主页翻我前些天的文章,这里不再详解,只说一句:当最后一次B=1时候单单返回一个A,这个快速幂利用设计的很巧妙

  1. class Solution { //基础递归
  2. public:
  3. int multiply(int A, int B) {
  4. if(B==1) return A;
  5. return A+multiply(A,--B);
  6. } //如果有9287346 1这种用例那这个做法就傻逼了
  7. };
  8. class Solution { //快速幂思想递归
  9. public:
  10. int multiply(int A, int B) {
  11. return (B&1? A : 0)+(B>1? multiply(A+A,B>>1) : 0);
  12. }
  13. };
  14. class Solution { //基础递归+最小化优化
  15. public: //思想是把10个1变成1个10,就要考虑B输入其实是0的情况
  16. int multiply(int A, int B) {
  17. if(B==1) return A;
  18. if(A>=B) return A+multiply(A,--B);
  19. else return multiply(B,A);
  20. }
  21. };

来个递归优化一行解决的

return B==0?0:(A>B? A+multiply(A,B-1) : multiply(B,A) );

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/389238
推荐阅读
相关标签
  

闽ICP备14008679号