题意
,给你
,求
题解
我们先打表看看这个函数的信息
1 1 2 3 3 1 4 7 5 1 6 3 7 1 8 15 9 1 10 3 11 1 12 7 13 1 14 3 15 1
观察发现的值都是二进制下都是1的情况。若我们考虑右移操作和除二,那么可以得到
,那么对于求和序列中奇数都是1,我们对偶数部分进行提取出个2的操作可以得到。
即有如下递推式。
这样的话也就是说能够递归在的级别来求解答案了。
复杂度
时间复杂度
空间复杂度
代码
python
# # # @param n int整型 # @return long长整型 # class Solution: def Sum(self , n ): # write code here if(n==1): return 1 return n+2*self.Sum(n//2)
c++/c
class Solution { public: /** * * @param n int整型 * @return long长整型 */ long long Sum(int n) { // write code here if(n==1) return 1; return n+2*Sum(n/2); } };