程序中的一些思想

看过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 组合在一起,相当于用户自定义的类,在整体开发的时候,有人负责造类,有人负责用类实例化对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值