2007-07-27

DNS延伸出的思考邏輯

最近上MCSE的課程,今天上到對外服務最為重要的DNS,DNS的需求是源自於人類對於有意義的文字比流水數字來的容易記憶而產生的~

DNS就是不斷的查詢和轉發,只是對象不同,簡單的說就是遞迴查詢和重覆查詢
這個遞迴讓我頭痛很久~"~
雖然說遞迴算是在程式上的基本應用,不過我個人程式理解能力頗差
所以忽然冒出遞迴和迴圈有啥差別的問題
用雅虎知識加還搜尋出河內塔這種像是數學邏輯的理論
描述如下
遞迴跟迴圈的最大差別,在於解決問題的思考方法不同。
迴圈是把問題拆成「詳細的步驟」,再挑出其中相同重覆的步驟,用迴圈重覆執行若干遍,直到滿足某個條件為止。
遞迴是把問題拆成「較小的相同問題」,把小問題解決了,大問題自然跟著解了。
舉例來說,要計算 n! (n 的階乘),有兩種思考方法:
n! = n*(n-1)*...*3*2*1,這是迴圈的解法;
n! = n*(n-1)!,這是遞迴的解法,把大問題 (n!) 折成較小的相同問題 ((n-1)!),只要 (n-1)! 解了,n! 自然好解。當然,(n-1)! 可以用相同的方法拆成 (n-1)*(n-1-1)!,如此重覆下去,就是遞迴。
一般來說,遞迴因為一直重覆呼叫函數,所以要花較多的計算時間。但是有一些問題,用迴圈的思考方式不容易找出解法,用遞迴的思考方式反而好做。
下次如果遇到迴圈不容易解的問題,不妨用遞迴的思考方式來解解看,說不定會有驚喜喔!
看完當然有很多想法,但最主要的想法是,為啥我讀大學時沒有多認識些文組的朋友>"<
我發現像諸如此類的邏輯其實在生活上有蠻多的應用..
可是從狹觀的程設..等等理組觀點去推論往往無法得到宏觀且完整的概念
這種東西應該問讀哲學或心理學或雜學的人比較有概念吧@@~
就以這為目標多交些朋友好嚕!也歡迎有看到此篇文章的同好一起討論!!

沒有留言: