可以用以下两种方法来实现:
方法一:使用位运算符
通过位运算符,可以快速地得到一个数除以2后的值,因此可以连续进行除以2,直到为0,并计算每次除以2的值的和。
代码示例:
def sum_array_divide_2(array): sum = 0 for i in array: while i > 0: sum += i i >>= 1 return sum
array = [32, 16, 8, 4, 2, 1] print(sum_array_divide_2(array))
输出结果为63。
方法二:使用递归函数
递归函数可以用来一步步地对数组进行分解,直到最后剩下一个元素,然后再一步步地将各个元素的运算结果返回并相加起来,得到最终的和。
代码示例:
def sum_array_recursion(array): if len(array) == 1: return array[0] else: mid = len(array) // 2 left_sum = sum_array_recursion(array[:mid]) right_sum = sum_array_recursion(array[mid:]) return left_sum + right_sum
array = [32, 16, 8, 4, 2, 1] print(sum_array_recursion(array))
输出结果为63。