我收到错误“缺少函数返回'Bool'”但我找不到原因。返回一个函数中的Bool
func isPrime(_ number: Int) -> Bool {
for primeDivisors in 2..<number {
if number % primeDivisors == 0 {
return true
} else {
return false
}
}
}
isPrime(13)
我收到错误“缺少函数返回'Bool'”但我找不到原因。返回一个函数中的Bool
func isPrime(_ number: Int) -> Bool {
for primeDivisors in 2..<number {
if number % primeDivisors == 0 {
return true
} else {
return false
}
}
}
isPrime(13)
您的主要检查器不正确,因为循环的第一次迭代会返回一个值。在决定数字是否为素数之前,您必须经历整个循环。
func isPrime(_ number: Int) -> Bool {
for primeDivisors in 2..<number {
if number % primeDivisors == 0 {
return false
}
}
return true
}
注意,该代码是低效的,因为它继续检查整除的次数比是必要的:你可以停止在到达的number
平方根检查。
重要的是要注意你的“假”和“真”条件是正确的; OP的条件与他们应该得到的*相反。 – NRitH
@NRitH这绝对是真的 - 这就是为什么我切换他们。谢谢! – dasblinkenlight
这是抱怨,因为不是所有的代码路径最终返回的东西。如果number
小于2,会发生什么情况?然后您的for
循环以及其中的返回语句将永远不会被调用,并且在for
循环完成后没有return
。
如果你调用'isPrime(1)'''for'循环将永远不会执行,并且函数永远不会碰到'return'语句。 – vacawama