[英]Unrolling Method For: T(n) = 1 when n = 0 and 2T(n-1) + 1
為了
我知道我們應該尋找模式並理解問題,直到我們開始用不同的變量轉換方程。 然而,一旦我到達那里,我不明白它是如何完成的以及為什么要完成某些事情。
我的問題特別是我們在 2 i ·T(n-1) 處用n替換i 。 但是,完整的解釋也很有用!
就像 99999 10是 100000 10 - 1, 11111 2是 100000 2 - 1 一樣。
有兩種方法可以看待這個問題。 一個是從一些任意的n個工作倒退,這說明你已經蓋。 我發現有用的另一種方法是從零開始,直到n :
這里 << 是二進制數上的“左移”運算符,相當於乘以 2。這個運算符在許多編程語言中相當常見。 它有助於表明您只是在每一步添加 1 位。 回到第一個斷言, n個連續的一位等價於 2 n + 1 - 1。
您問題中的解釋僅使用i作為從 1 到n運行的計數器。 除了作為計步器之外,它不是等式的一部分。 在最后一步中, i = n ,因此您可能會對轉換感到困惑。
當第一次看到公式時,我和你有同樣的問題。 但讓我們從頭開始。
首先,您嘗試通過i
逐步接近最終深度n
。 因此,對於每個數字i
您解析公式i
次(在圖片中i=1
, i=2
, i=3
, i=4
),但要注意您還不能解析T(ni)
。 但是您可以推導出i=n
的模式。 這一行實際上是從錯誤開始的:圖片上寫着i=ni
但實際上應該是i=n
因為你到達了底部。
剩下的就很簡單了:你寫下你看到的模式並將它放在一個總和公式中( Sum_{j=0}^{i-1}2^j
)。 你用n
代替i
,因為這是該行的前提。 您將T(nn)
替換為T(0)=1
。 接下來,您應用有限幾何級數,從而擺脫求和符號。 其余的應該是清楚的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.