下面是我的快速函数,用于计算给定实数组的倍数之和,范围从0到'直到'。该算法从1到上限循环,并将多个数组映射到指定乘数的模数组,然后使用乘法减少该数组,这样如果给定的i值可被任何给定的乘数整除,减少的结果将为0.
func sumOfMultiples(mults: [Int], upto: Int) -> {
var acc: Int = 0
for i in 1...upto {
if mults.map({i % $0}).reduce(1,*) == 0 {
acc += i
}
}
return acc
}
问题是我收到了编译错误
error: 'Int' is not a subtype of '()'
if mults.map({i % 0}).reduce(1,*) == 0 {
答案 0 :(得分:1)
// Methinks you're missing this: ~~~~~~~~vvv
func sumOfMultiples(mults: [Int], upto: Int) -> Int {
答案 1 :(得分:0)
func sumOfMultiples(mults: [Int], upto: Int) -> {
var acc: Int = 0
for i in 1...upto {
if mults.map( { (x) in i % x } ).reduce(1,*) == 0 {
acc += i
}
}
return acc
}