我收到了错误"错过了返回功能,预计会返回' Bool'"但我无法弄清楚原因。
func isPrime(_ number: Int) -> Bool {
for primeDivisors in 2..<number {
if number % primeDivisors == 0 {
return true
} else {
return false
}
}
}
isPrime(13)
答案 0 :(得分:1)
您的主要检查程序不正确,因为循环的第一次迭代返回一个值。在决定数字是素数之前,你必须经历整个循环。
func isPrime(_ number: Int) -> Bool {
for primeDivisors in 2..<number {
if number % primeDivisors == 0 {
return false
}
}
return true
}
请注意,此代码效率低下,因为它会继续检查可分性的次数超过必要时间:您可以在达到number
的平方根时停止检查。
答案 1 :(得分:0)
它抱怨,因为并非所有代码路径都会返回某些内容。如果number
小于2,会发生什么?然后,for
循环及其中的return语句将永远不会被调用,并且在return
循环结束后不会发生for
。