遞迴查詢的向上遞迴和向下遞迴是什麼意思

2023-01-15 01:41:02 字數 2880 閱讀 8029

1樓:

備忘錄方法是動態規劃方法的變形。與動態規劃演算法不同的是,備忘錄方法的遞迴方式是自頂向下的,而動態規劃演算法則是自底向上的。

如: 求lcs的問題:

當xi=yj時,求c[i,j]只需知道c[i-1,j-1],而無需用到c[i,0]~c[i,j-1]及c[i-1,j]~c[i-1,n]。

∴ 當只需求出一個lcs時,可能有一些c[p,q]在整個求解過程中都不會用到。

一般地,當某個問題可以用動態規劃法求解,但二維陣列中有相當一部分元素在整個計算中都不會被用到。我們就不需要以遞推方式逐個計算二維陣列中元素。

而採用備忘錄方法:陣列中的元素只是在需要計算時才去計算,計算採用遞迴方式,值計算出來之後將其儲存起來以備它用。

如:求lcs的問題:

首先將c[i,0](0≤i≤m)與c[0,j](1≤j≤n)初始化為0。其餘m×n個c[i,j]全部初始化為-1。

計算c[i,j]的遞迴演算法lcs_l2(x,y, i,j,c)(備忘錄方法):

若x[i]=y[j],則去檢查c[i-1,j-1],若c[i-1,j-1]> -1(已經計算出來),就直接把c[i-1,j-1]+1賦給c[i,j],返回。

若c[i-1,j-1]=-1(尚未計算出來),就遞迴呼叫lcs_l2(x,y, i-1,j-1,c) 計算出c[i-1,j-1],然後再把c[i-1,j-1]+1賦給c[i,j] ,返回。

若x[i] ¹ y[j],則要檢查c[i-1,j]和c[i,j-1]。

若兩者均 > -1(已經計算出來),則把max 賦給c[i,j],返回。

若c[i-1,j], c[i,j-1] 兩者中有一個等於-1(尚未計算出來),或兩者均等於-1,就遞迴呼叫lcs_l2將其計算出來,然後再把max 賦給c[i,j]。

∴若有大量的子問題無需求解時,用備忘錄方法較省時。

但當無需計算的子問題只有少部分或全部都要計算時,用遞推方法比備忘錄方法要好(如矩陣連乘,最優二分搜尋樹)

j**a遞迴向上查詢

2樓:匿名使用者

public static boolean isprimenumber(int n)

關於sql遞迴查詢問題

3樓:

select * from dbo.tbregioninfo where regionid not like '01%' and len(regionid)>2

我發現根本就沒必要用到你的tbregiontree表

看起來你的表沒有設計好。。。

4樓:匿名使用者

遞迴幹嘛,你regionid就是一個絕對地址。like就好了。

初學者請教linux中的遞迴查詢是個啥意思

5樓:嵌依

遞迴的意思是一般指的改變目錄及其子目錄和檔案 由後往前層層遞迴

解釋一下dns的遞迴解析是什麼含義?

6樓:匿名使用者

一個完整的域名格式應該是「www.abc.com.」最後的那個「.」就叫根域,也叫點域,通常在域名中都是省略的。

遞迴查詢就是主機向dns伺服器傳送域名查詢請求,伺服器直接把查詢的結果返回給主機。

與遞迴查詢相對應的是迭代查詢。

迭代查詢的步驟是:

1、主機將查詢請求傳送到本地dns伺服器。

2、本地dns伺服器查詢不到結果。即將該請求**到網際網路上的根域。

3、根域將所要查詢域名中的頂級域(假設要查詢www.abc.com,該域名的頂級域就是com)的伺服器ip地址返回到本地dns。

4、本地dns根據返回的ip地址,再向頂級域(就是com域)傳送請求。

5、com域伺服器再將域名中的二級域(即www.abc.com中的abc。

如果是www.abc.com.

cn,它的頂級域就是cn,com在這裡就變成了二級域)的ip地址返回給本地dns。

6、本地dns再向二級域傳送請求進行查詢。

7、之後不斷重複這樣的過程,直到本地dns伺服器得到最終的查詢結果,並返回到主機。這時候主機才能通過域名訪問該**。

7樓:類人界異

就是一層一層的向上查詢,直到米國的dns根伺服器

遞迴呼叫有什麼好處一般什麼情況下要遞迴

8樓:匿名使用者

遞迴時常用的程式設計技術,其基本思想就是「自己呼叫自己」,一個使用遞迴技術的方法即是直接或間接的呼叫自身的方法。遞迴方法實際上體現了「以此類推」、「用同樣的步驟重複」這樣的思想,它可以用簡單的程式來解決某些複雜的計算問題,但是運算量較大。

還有些資料結構如二叉樹,結構本身固有遞迴特性;此外,有一類問題,其本身沒有明顯的遞迴結構,但用遞迴程式求解比其他方法更容易編寫程式,如八皇后問題、漢諾塔問題等。

正因為遞迴程式的普遍性,我們應該學會使用遞迴來求解問題。直接遞迴程式與間接遞迴中都要實現當前層呼叫下一層時的引數傳遞,並取得下一層所返回的結果,並向上一層呼叫返回當前層的結果。至於各層呼叫中現場的儲存與恢復,均由程式自動實現,不需要人工干預。

因此,在遞迴程式的設計中關鍵是找出呼叫所需要的引數、返回的結果及遞迴呼叫結束的條件。如在階乘函式fact(n)中,各層要求傳遞一個自然數n,返回n* fact(n-1),遞迴呼叫結束的條件是n=0;據此,可以方便地寫出它的對應程式

誰給解釋一下,資料結構中的遞迴是什麼意思?

9樓:匿名使用者

遞迴:遞迴是一種重要的程式設計技術。該方法用於讓一個函式從其內部呼叫其自身。

一個示例就是計算階乘。0 的階乘被特別地定義為 1。 更大數的階乘是通過計算 1 * 2 * ...

來求得的。

C語言程式題 寫出遞迴與非遞迴兩種折半查詢程式,並分析其時間

折半查詢需要先對資料進行排序。include using namespace std int bsearch int data,const int x,int beg,int last while beg last else if data mid x else if data mid x retu...

遞迴數列與遞推數列的區別,遞推數列和遞迴數列有啥區別

詳細解釋。遞迴數列 recursive sequence 一種用歸納方法給定的數列。例如,等比數列可以用歸納方法來定義,先定義第一項 a1 的值 a1 0 對 於以後的項 用遞推公式an 1 qan q 0,n 1,2,給出定義。一般地,遞迴數列的前k項a1,a2,ak為已知數,從第k 1項起,由某...

再問遞迴的問題,再問一個遞迴的問題

函式呼叫時,只有被呼叫函式返回,才會繼續執行,就是fn b 1 b賦值c不會立即執行,會壓棧儲存,壓棧時會儲存任何一個變數 符號等等,棧是從高地址往低地址走的,比如先壓入c,再壓入 接著fn b 1 這裡就會進入函式fn,接著從函式開始壓入內容,也就是直到有一個fn返回才會壓入後面的 和b,分析遞迴...