有人可以解释一下如何编写这个函数,它应该返回x的factorial
。
我尝试这样做的方式给了我一个error
。
此行位于字典中,并引用 Operation.UnaryOperation
(Double) -> Double
我试着写出我需要的功能,它应该是这样的:
private func factorial(n: Double) -> Double {
if (n<=1) {
return 1
}
return n * factorial(n-1)
}
现在我需要将其转换为单线功能,我该怎么做?它看起来像这样吗?为什么我会收到错误?
"x!" : Operation.UnaryOperation({if ($0<=1) {return 1} else {return $0 * factorial($0-1)}}),
答案 0 :(得分:0)
let x = Operation.UnaryOperation(factorial{if ($0<=1) {return 1} else {return $0 * factorial($0-1)}})
答案 1 :(得分:0)
只需将命名函数嵌入到闭包中 - 就像这样
enum Operation {
case UnaryOperation( (Double) -> Double)
case BinaryOperation( (Double, Double) -> Double)
}
let dictionary: [String: Operation] = [
"+" : Operation.BinaryOperation({ return $0 + $1 }),
"!" : Operation.UnaryOperation({
arg: Double in
func factorial(x: Double) -> Double {
if x <= 1 {
return 1
} else {
return x * factorial(x - 1)
}
}
return factorial(arg)
})
]
答案 2 :(得分:0)
func factorial(_ x: UInt) -> UInt {
return x == 0 ? 1 : x * factorial(x - 1)
}
// Example:
print(factorial(6))
// 720