什麼是dns遞歸查詢
1. 遞歸查詢 : 一般客戶機和服務器之間屬 遞歸查詢 ,即當客戶機向 DNS 服務器發 出請求後,若 DNS 服務器本身不能解析,則會向另外的 DNS 服務 器發出查詢請求,得到結果後轉交給客戶機; 2.迭代查詢(反複查詢): 一般 DNS 服務器之間屬迭代查詢,如:若 DNS 2不能響應 DNS 1的請求,則它會將 DNS 3的IP給 DNS 2,以便其再向 DNS 3發出請求; 舉例:比如學生問老師一個問題,王老師告訴他答案這之間的叫 遞歸 查詢。這期間也許王老師也不會,這時王老師問張老師, 這之間的查詢叫迭代查詢!
滿意請采納
遞歸是什麼意思?
遞歸是一種重要的編程技術。該方法用於讓一個函數從其內部調用其自身。一個示例就是計算階乘。0 的階乘被特別地定義為 1。 更大數的階乘是通過計算 1 * 2 * ...來求得的,每次增加 1,直至達到要計算其階乘的那個數。
下麵的段落是用文字定義的計算階乘的一個函數。
“如果這個數小於零,則拒絕接收。如果不是一個整數,則將其向下舍入為相鄰的整數。如果這個數為 0,則其階乘為 1。如果這個數大於 0,則將其與相鄰較小的數的階乘相乘。”
要計算任何大於 0 的數的階乘,至少需要計算一個其他數的階乘。用來實現這個功能的函數就是已經位於其中的函數;該函數在執行當前的這個數之前,必須調用它本身來計算相鄰的較小數的階乘。這就是一個遞歸示例。
遞歸和迭代(循環)是密切相關的 — 能用遞歸處理的算法也都可以采用迭代,反之亦然。確定的算法通常可以用幾種方法實現,您隻需選擇最自然貼切的方法,或者您覺得用起來最輕鬆的一種即可。
顯然,這樣有可能會出現問題。可以很容易地創建一個遞歸函數,但該函數不能得到一個確定的結果,並且不能達到一個終點。這樣的遞歸將導致計算機執行一個“無限”循環。下麵就是一個示例:在計算階乘的文字描述中遺漏了第一條規則(對負數的處理) ,並試圖計算任何負數的階乘。這將導致失敗,因為按順序計算 -24 的階乘時,首先不得不計算 -25 的階乘;然而這樣又不得不計算 -26 的階乘;如此繼續。很明顯,這樣永遠也不會到達一個終止點。
因此在設計遞歸函數時應特別仔細。如果懷疑其中存在著無限遞歸的可能,則可以讓該函數記錄它調用自身的次數。如果該函數調用自身的次數太多,即使您已決定了它應調用多少次,就自動退出。
下麵仍然是階乘函數,這次是用 JScript 代碼編寫的。
// 計算階乘的函數。如果傳遞了
// 無效的數值(例如小於零),
// 將返回 -1,表明發生了錯誤。若數值有效,
// 把數值轉換為最相近的整數,並
// 返回階乘。
function factorial(aNumber) {
aNumber = Math.floor(aNumber); // 如果這個數不是一個整數,則向下舍入。
if (aNumber < 0)="" {="" 如果這個數小於="">
return -1;
}
if (aNumber == 0) { // 如果為 0,則其階乘為 1。
return 1;
}
else return (aNumber * factorial(aNumber - 1)); // 否則,遞歸直至完成。
}
解釋一下DNS的遞歸解析是什麼含義?
一個完整的域名格式應該是“[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服務器得到最終的查詢結果,並返回到主機。這時候主機才能通過域名訪問該網站。
遞歸查詢 的向上遞歸 和 向下遞歸 是什麼意思
遞歸說白了就是自己調用自己,向上遞歸和向下遞歸機製都一樣,都有一個邊界,都是調用自身。隻是一個限定了最大值,一個限定了最小值,舉個例子:
向下遞歸:
求5的階乘。。
如下:
Java代碼
public class Test {
static int multiply(int n){
if(n==1||n==0)
return n;
else
return n*multiply(n-1);
}
public static void main(String[] args){
System.out.println(multiply(10));
}
}
向上遞歸:
Java代碼
public class Count
{
static void count(int n) //遞歸方法
{
if (n<>
count(n+1);
System.out.print(" "+n);
}
public static void main(String args[])
{
count(1);
System.out.println();
}
}
這個結果輸出5,4,3,2,1
初學者請教Linux中的遞歸查詢是個啥意思
遞歸的意思是一般指的改變目錄及其子目錄和文件 由後往前層層遞歸
進行域名解析時,遞歸和迭代查詢方式是什麼意思?什麼場合用?還是合起來用?
問下樓主是?nupt的嗎??下麵是我的答案
遞歸查詢是最常見的查詢方式,域名服務器將代替提出請求的客戶機(下級DNS服務器)進行域名查詢,若域名服務器不能直接回答,則域名服務器會在域各樹中的各分支的上下進行遞歸查詢,最終將返回查詢結果給客戶機,在域名服務器查詢期間,客戶機將完全處於等待狀態。
示例:?(紅色為查詢,藍色為迭代查詢返回的提示信息,棕色為遞歸查詢返回的IP信息)
示例說明:A向B發送遞歸查詢請求,B向C發送迭代查詢請求(下一節將介紹迭代查詢),得到C給出的提示後,B向D發送迭代查詢請求,得到D給出的提示後,B向E發出迭代請求,得到E給出的提示後,B向F發出迭代查詢請求,得到F給出的提示後,B得到了F返回G的IP地址,B向A返回G的IP地址,整個查詢結束。
迭代查詢的工作方式
迭代查詢又稱重指引,當服務器使用迭代查詢時能夠使其他服務器返回一個最佳的查詢點提示或主機地址,若此最佳的查詢點中包含需要查詢的主機地址,則返回主機地址信息,若此時服務器不能夠直接查詢到主機地址,則是按照提示的指引依次查詢,直到服務器給出的提示中包含所需要查詢的主機地址為止,一般的,每次指引都會更靠近根服務器(向上),查尋到根域名服務器後,則會再次根據提示向下查找。從上節的圖中可以知道,B訪問C、D、E、F、G,都是迭代查詢,首先B訪問C,得到了提示訪問D的提示信息後,開始訪問D,這時因為是迭代查詢,D又返回給B提示信息,告訴B應該訪問E,依次類推。
說明:假設你要尋找一家你從未去過的公司,你會有2種解決方案,1是找一個人替你問路,那可能是你的助手,2是自己問路,每走過一個路口,就問一個人,這就好比遞歸查詢和迭代查詢,遞歸查詢在這裏代表你的第1種解決方案,而迭代則是第2種解決方案。
如合配置遞歸查詢及迭代查詢
在默認情況下DNS服務器既接受來自其他客戶機(其他DNS服務器)的迭代查詢也接受其他客戶機(其他DNS服務器)的遞歸查詢。
提醒:在DNS服務器屬性中,你可能會混淆高級選項卡中的“禁止遞歸”選項和轉發器選項中的“不對這個域使用遞歸”後者控製將要接受的查詢類型。
遞歸是什麼意思?
遞歸就是在自己調用自己。例如:
int foo(int n)
{
。。。
return foo(n); //這裏就是 遞歸調用
}
C語言中的遞歸是什麼意思
要理解遞歸,首先你要理解遞歸
簡單來說就是一個函數調用到了自己,就可以稱為遞歸.下麵是簡單的求n!的例子:
#include #include int fac(int n) { if(n==0)return 1; return n*fac(n-1); } void main() { printf("%d\n",fac(6)); } 一、含義 程序調用自身的編程技巧稱為遞歸( recursion)。遞歸做為一種算法在程序設計語言中廣泛應用。 一個過程或函數在其定義或說明中有直接或間接調用自身的一種方法,它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞歸策略隻需少量的程序就可描述出解題過程所需要的多次重複計算,大大地減少了程序的代碼量。遞歸的能力在於用有限的語句來定義對象的無限集合。 二、遞歸算法解決問題的特點: 【1】遞歸就是方法裏調用自身。 【2】在使用遞歸策略時,必須有一個明確的遞歸結束條件,稱為遞歸出口。 【3】遞歸算法代碼顯得很簡潔,但遞歸算法解題的運行效率較低。所以不提倡用遞歸設計程序。 【4】在遞歸調用的過程中係統為每一層的返回點、局部量等開辟了棧來存儲。遞歸次數過多容易造成棧溢出等,所以一般不提倡用遞歸算法設計程序。 【5】在做遞歸算法的時候,一定把握出口,也就是做遞歸算法必須要有一個明確的遞歸結束條件。這一點是非常重要的。其實這個出口就是一個條件,當滿足了這個條件的時候我們就不再遞歸了。 三、示例程序: 使用Java代碼求5的階乘。(5的階乘=5*4*3*2*1) [java]?view plain?copy package?org.wxp.recursion; /** *?計算5的階乘(result?=?5*4*3*2*1) *?@author?Champion.Wong * * */ public?class?Test01?{ public?static?void?main(String[]?args)?{ System.out.println(f(5)); } public?static?int?f(int?n)?{ if?(1?==?n) return?1; else return?n*f(n-1); } } 此題中,按照遞歸的三個條件來分析: (1)邊界條件:階乘,乘到最後一個數,即1的時候,返回1,程序執行到底; (2)遞歸前進段:當前的參數不等於1的時候,繼續調用自身; (3)遞歸返回段:從最大的數開始乘,如果當前參數是5,那麼就是5*4,即5*(5-1),即n*(n-1) 遞歸做為一種算法在程序設計語言中廣泛應用.是指函數/過程/子程序在運行過程中直接或間接調用自身而產生的重入現象.遞歸是計算機科學的一個重要概念,遞歸的方法是程序設計中有效的方法,采用遞歸編寫程序能使程序變得簡潔和清晰.。 給你個求階乘的例子: public long factorial(long n){//求n! if(n==0)return 1; else return n*factorial(n-1);//利用遞歸n!=n*(n-1)!直到0 } 比較經典的遞歸例子,漢諾塔: public class T2010_7_9{ static int count=1; public static void move(char j,char k){ System.out.println("第"+(T2010_7_9.count++)+"步:將一個盤子從柱子"+j+"拿到柱子"+k); } public static void hanoi(char a,char b,char c,int n){ if(n==1)move(a,c); else{hanoi(a,c,b,n-1); move(a,c); hanoi(b,a,c,n-1); } } public static void main(String[] args){ char a='A',b='B',c='C'; int num=3;//盤子的個數 hanoi(a,b,c,num); } } 轉載請注明出處句子大全網 » 什麼是dns遞歸查詢誰能說說JAVA的遞歸是什麼意思?
java中遞歸的作用是什麼?為什麼要用到遞歸?