簡體   English   中英

計算任意大小 N 的 function 調用次數

[英]Calculate number of function calls for any size N

我試圖了解一種方法來編寫 fun1 的 print 語句將被調用多少次的任何大小 N。以求和形式編寫。 這更像是一個分析問題。 我知道我可以設置一個計數變量並打印結果。 S 是 N 項的數組。 N 是大小。

def myAlg(S,n):
    for i in range(1,n+1):
        for j in range(1,i+1):
            for k in range(1,j+1):
                if j > k:
                    print('fun1 called, and count is now', count)
                else:
                    print('fun2 called')

老實說,我對如何處理這個問題有點迷茫。 任何解釋將不勝感激。

對於前兩個循環,我們有算術級數和1+2+3+...+n ,結果是

T(n) = n*(n+1)/2

稱為三角數 (1,3,6,10,15,21...)

所以循環k執行了T(n)次,並且執行了內部部分

Q(n) = sum(T(i),i=1..n) = n*(n+1)*(n+2)/6

次,序列被稱為四面體數(1,4,10,20,35,56 ...)

但是我們必須減去T(n)以排除fun2調用(每個循環一個)

Result = n*(n+1)*(n+2)/6 - n*(n+1)/2 = (n-1)*n*(n+1)/6

這是沒有最后一項的相同Q序列,所以

Result(n) = Q(n-1) = (n-1)*n*(n+1)/6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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