[英]How to reduce the time and space complexity of the function foo(n)?
foo 函數的時間復雜度是 O(n^2) 但我需要減少它並且似乎無法弄清楚。
def bar ( n ):
if n == 0 :
return 0
else :
return n + bar ( n - 1 )
def foo ( n ):
if n == 0 :
return 0
else :
return bar ( n ) + foo ( n - 1 )
您可以像這樣改進bar
:
def bar(n):
return n * (n + 1) / 2
這應該將foo
減少到 O(n)。
您甚至可以將foo
定義為:
def foo(n):
return n * (n + 1) / 4 + n * (2 * n + 1) * (n + 1) / 12
在 O(1) 中有一個函數:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.