在函数中返回Bool

时间:2017-06-16 02:37:37

标签: swift function if-statement boolean

我收到了错误"错过了返回功能,预计会返回' Bool'"但我无法弄清楚原因。

func isPrime(_ number: Int) -> Bool {
   for primeDivisors in 2..<number {
       if number % primeDivisors == 0 {
           return true
       } else {
           return false
       }
   }
}

isPrime(13)

2 个答案:

答案 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