簡體   English   中英

如何降低函數 foo(n) 的時間和空間復雜度?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM