我收到錯誤「缺少函數返回'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