我计算1,2或5个数字的输入数k的所有可能变体。这是理解的简单算法:面额任务递归算法的时间复杂度
//1,2,5
func foo(k: Int, result: [Int] = []) {
if k == 0 {
print(result)
return
}
var one = result
one.append(1)
foo(k: k-1, result: one)
if k >= 2 {
var two = result
two.append(2)
foo(k: k-2, result: two)
}
if k >= 5 {
var five = result
five.append(5)
foo(k: k-5, result: five)
}
}
所以,它的工作原理。我的问题是这个算法的复杂性(大O)是什么? 我认为它是3^k,因为里面有3次递归调用。 请证明或解释你的意见。