所以我在 xcode 游樂場有代碼,并在代碼中得到錯誤錯誤
這就是我做的練習 回傳階乘 創建一個接受整數并回傳該整數的階乘的函式。也就是說,整數乘以所有正的低整數。
這是我的代碼
func factorial(_ num: Int) -> Int {
var result :Int = 0
for _ in num...1 {
result = num * (num - 1)
}
return result
}
print(factorial(12)) //這一行出錯
但在終端得到了這個輸出。 終端錯誤
uj5u.com熱心網友回復:
答案在錯誤訊息中 - 范圍的上限必須大于或等于下限。
因此,您需要以不同的方式重寫該方法。您的代碼中還有一個根本缺陷-您的數學邏輯是錯誤的-每次都會覆寫結果,而不是累積總數。對問題采用類似的方法,您可以這樣做:
func factorial(_ num: Int) -> Int {
var result :Int = 1
guard num > 0 else {return result}. //0! is 1 not 0
var num = num
while num > 0 {
result *= num
num -= 1
}
return result
}
使用遞回有一種更優雅的方式來執行此操作,它避免了丑陋的var num=num
func fac2(_ num: Int, total: Int = 1) -> Int {
return num > 0 ? fac2(num-1, total: total * num) : total
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/455671.html
