1. 程式人生 > 其它 >2021/9/18+19(中綴轉字尾 + 遞迴 迷宮 + 八皇后)

2021/9/18+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

迷宮問題遇到障礙,怎麼辦。