这是Python,数据工程和机器学习的日常思想的一部分
考虑函数调用的复杂性很重要。基本上,如果我们的程序中有一个复杂的调用,则该程序会变慢。有时,在处理功能调用时,复杂性可能会进入我们的工作空间。因此,敏锐地寻找任何递归或嵌套功能是一种很好的做法,因为它们是减慢代码的主要原因。要理解这一点,让我们有一个fibonacci函数的样本
def fib (n):
if n <=1 :
return n
else:
return fib(n-1) + fib(n-2)
result= fib(10)
print(result)
上述代码的时间复杂性是o(2^n)
此处,通过递归调用具有较小函数参数的斐波那契函数来计算斐波那契序列中的第10个数字,直到达到n = 0和n = 1的基本情况。在这种情况下,算法的时间复杂性呈指数增长,首先是n的巨大值。在实践中;我们想使用友好的算法来最大程度地减少计算重复。对于这种情况,可以如下给出的友好算法。
def fib_optimized(n):
if n < 2:
return n
else:
fib_prev, fib_curr = 0, 1
for i in range(2, n+1):
fib_next = fib_prev + fib_curr
fib_prev = fib_curr
fib_curr = fib_next
return fib_curr
result = fib_optimized(10)
print(result)
上述函数的时间复杂性是O(n),因此更优化。
由此,我们可以回家,与算法的时间复杂性与函数调用的时间复杂性之间的比较。
-
算法的时间复杂性取决于输入数据的大小,这基本上是算法解决某个问题所花费的时间
-
函数的时间复杂性取决于函数本身。
因此,为手头问题选择正确的算法并尽可能优化算法以最小化不必要的复杂性。 至关重要。
快乐学习!