看着这个太长时间失明了。无法发现错误。
使"索引超出范围"调用函数时出错factorialIntermediateResults(n: 4)
希望有人能用新眼睛看一看并帮我发现错误。谢谢!
func factorialIntermediateResults(n: Int) -> [Int] {
if n == 0 || n == 1 { return [1] }
var results = [Int]()
doAllFactorials(n, &results, 0)
return results
}
func doAllFactorials(_ n: Int, _ results: inout [Int], _ level: Int) -> Int {
if n > 1 {
results[level] = n * doAllFactorials(n-1, &results, level+1)
return results[level]
} else {
results[level] = 1
return 1
}
}
factorialIntermediateResults(n: 4)
答案 0 :(得分:3)
results
是一个空数组,但您尝试访问值而不先添加值。
最简单的解决方案可能是用零预先填充数组。
var results: [Int] = Array(repeating: 0, count: n)