2021/9/18+19(中綴轉字尾 + 遞迴 迷宮 + 八皇后)
阿新 • • 發佈:2021-09-19
2021/9/18(中綴轉字尾 + 遞迴)
第一次到南通市圖書館啦!開心
中綴轉字首:
中綴轉字尾:
程式碼已經提交到了gitee
/datastructrue/stack/convertpolandExpression
遞迴
棧在計算機中應用最廣泛的是程式設計語言中的函式呼叫,特別是在遞迴程式中,子程式呼叫時,要把有關呼叫程式的必要資訊(返回地址,引數)儲存到棧中,這塊資訊稱為“活動子資訊”。每次從子程式返回時,就從棧彈出一個活動資訊。
遞迴:自己調自己。
當我們在main函式中呼叫其他函式時就類似上述含義。main-->getNum 與 f(n)-->f(n-1)----n =1都有一個特點。即不再往下呼叫時,依次往上解開。
圖解棧呼叫機制
遞迴可以解決哪些問題:
1)各種數學問題:8皇后問題,漢諾塔,階乘問題,迷宮問題,球和籃子問題。(Google程式設計大賽)
2)各種演算法也會遇到遞迴,比如快排,歸併排序,二分查詢,分治演算法
3)將用棧解決的問題--> 遞迴程式碼比較簡潔
遞迴需要遵守的規則:
1)執行一個方法時,就建立一個新的受保護的獨立空間(棧空間)
2)方法的區域性變數是獨立的,不會相互影響,比如n變數
3)如果方法中使用的是引用型別變數(比如陣列),就會共享該引用型別的資料
4)遞迴必須向退出遞迴的條件逼近,否則就會無限遞迴
5)當一個方法執行完畢,或者遇到return,就會返回。
迷宮會朔問題
八皇后問題
都有在gitee上有具體程式碼。
今天遇到的bug
String 型別的不能之間==比較,這是一個非常低階的錯誤,居然debug了幾遍才得知。
String 型別通過.valueOf or toString() 方法進行比較
and
迷宮問題遇到障礙,怎麼辦。