news 2026/9/23 6:04:12

递归乘法(位操作)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
递归乘法(位操作)

题目要求吝啬地递归,那就是递归的深度要小一些。肯定不能使用加法,这里用到位操作。也就是俄罗斯农民乘法。

class Solution { public: int multiply(int A, int B){ if(B==0) return 0; if(B&1){ return A+multiply(A<<1,B>>1); } else return multiply(A<<1,B>>1); } };

时间复杂度分析,每次让B<<1,也就是B/2,那么时间复杂度就是O(logB),在c++中,int为32位,那么就是常数级的O(32)=O(1)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!