遞歸:你自己不太瞭解小孩子的需求,爲了縮小範圍,讓你的兒子去給孫子挑選。兒子比你強點有限,但依然不太瞭解小孩子的需求。爲了縮小範圍,你又讓你孫子去挑選。如此這般,直到找到合適的玩具。
迭代:你挑了一件覺得不行,又挑了一件又不行。如此這般,直到找到合適的玩具。
所以一句話:遞歸是自己調用自己,每次旨在縮小問題規模。迭代是自己執行很多次,每次旨在更接近目標。
理論上講域名查詢有兩種方式:
迭代查詢 A問B一個問題,B不知道答案說你可以問C,然後A再去問C,C推薦D,然後A繼續問D,如此迭代…
遞歸查詢 A問B一個問題,B問C,C問D… 然後D告訴C,C告訴B,B告訴A
上述過程中從resolver到遞歸DNS再到根的查詢過程爲遞歸查詢,遞歸DNS到根、到com、到baidu.com的過程爲迭代查詢。