我計算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次遞歸調用。 請證明或解釋你的意見。