Swift

时间:2016-05-20 09:26:22

标签: ios swift function dictionary

有人可以解释一下如何编写这个函数,它应该返回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)}}),

3 个答案:

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