如何计算数组中部分元素的和?Swift数组前5元素求和问题
计算数组前N个元素的和
你之前的代码问题出在0..<num[5]这里——num[5]取的是数组第6个元素的值(31),所以这个循环是遍历0到30的索引,和你要的前5个元素完全不搭边。正确的索引范围应该是0..<5,或者用更简洁的方式直接截取数组前缀。
下面给你几种可行的实现方式:
方法一:for循环遍历正确索引
var num = [31, 28, 31, 30, 30, 31, 30, 31, 30, 29, 31, 31] var total = 0 // 遍历前5个元素的索引:0到4 for i in 0..<5 { total += num[i] } print(total) // 结果:150
方法二:用prefix截取前缀 + reduce求和
Swift的数组有prefix(_:)方法,可以直接获取前n个元素,再配合reduce快速计算总和,代码更简洁:
var num = [31, 28, 31, 30, 30, 31, 30, 31, 30, 29, 31, 31] let total = num.prefix(5).reduce(0, +) print(total) // 结果:150
方法三:数组下标范围 + reduce求和
直接通过下标范围0..<5截取数组的子序列,再用reduce求和:
var num = [31, 28, 31, 30, 30, 31, 30, 31, 30, 29, 31, 31] let total = num[0..<5].reduce(0, +) print(total) // 结果:150
如果数组元素个数不足5,prefix(5)会自动取到数组末尾,不会越界,这一点比直接遍历索引更安全。
内容的提问来源于stack exchange,提问作者daria
相关产品推荐
相关产品推荐

