程式中的一些思想

2021-09-26 09:06:39 字數 759 閱讀 8178

看過mooc上的闞道巨集的c++課程,感覺講語法方面基本上是照本宣科,但是談到的幾個程式思維讓人眼前一亮。

後續有新的感悟將不定期跟新。

結合自己的理解,記錄如下:

1.關於遞推 recursion 和遞迴 regression

兩者是相反的思維,recursion是已知問題n,由解決問題1開始,不斷由簡到繁一直到n。

遞迴regression是把問題轉化為問題n-1,不斷轉化一直到問題1。利用解決問題1之後的結果再解決高階問題,整個流程是先降階再回歸。

從cs的角度來說,regression 占用的記憶體更多,因為每呼叫一次自身,記憶體中的棧都要載入乙個棧幀。

但是,只要recursion 能解決的問題 regression 都能解決,反之則不然。這也是regression的優勢所在。

2.關於面向過程 process-oriented(p-o) 和物件導向 object-oriented(o-o)

先假設 程式 program = data+algorithm

p-o的實質是algorithm 模組化,data 不分離。這樣在大型工程開發時碼農可以各自為戰開發 submodule,同時資料用extern 處理。

開發的時候尚可,後期更迭修改的時候就會有問題,就是改動乙個資料需要跟著修改多個函式,牽一髮而動全身。

o-o應運而生,實質就是將全部data 和所有algorithm 都分離,然後將有關係的data和algorithm 組合在一起,相當於使用者自定義的類,在整體開發的時候,有人負責造類,有人負責用類例項化物件。

freeBSD中的一些設計思想

指導性架構設計原則 下面的指導性設計原則描述了我們的設計理念 摘自 scheifler gettys x window system 安全的設計方法 編寫安全的應用程式要帶著謹慎和略有悲觀的生活觀點。程式應該本著 最小特權 的原則執行,這樣就不會有帶著大於足夠能完成其功能的許可權的程序在執行。預先測...

Meet in the middle思想的一些應用

meet in the middle 有時候也叫作split and merge 是一種用以獲取足夠高效解決方案的靈巧的思想。和分治思想非常類似,它將問題分割成兩個部分,然後試著合併這兩個子問題的結果。好處在於通過使用一點額外的空間,你可以解決兩倍規模的原來可以解決的問題。4和問題 流行的面試問題 ...

演算法的一些思想

目錄 0.總1.乘除法慢與加減法 2.窮舉演算法思想 3.遞推演算法思想 4.遞迴演算法思想 5.分治演算法思想 6.概率演算法思想 7.貪心演算法思想並不貪婪 追求最優求解,但不一定是能找到最優解 8.試探法演算法思想是一種委婉的做法 也叫回溯法 9.迭代演算法 輾轉法 10.動態規劃 五種基本演...