当前位置: 首页 > news >正文

程序中的一些思想

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

相关文章:

  • 深入 理解char * ,char ** ,char a[ ] ,char *a[] 的区别
  • STL MAP四种插入方法
  • c++ STL函数大全(一):vector
  • c++ STL函数大全(二):map
  • c++ STL函数大全(三):queue
  • c++ STL函数大全(四):string
  • c++ STL函数大全(五):set
  • data structure summary: (一):linklist
  • c++ STL函数大全(六):list
  • 面试必问之 const
  • 面试必问之 static
  • c++ STL函数大全(七):queue
  • c++STL函数大全(0):IO
  • linux 网络编程(1):开发基础
  • linux命令系列 sudo apt-get update和upgrade的区别
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 【个人向】《HTTP图解》阅后小结
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 【刷算法】从上往下打印二叉树
  • eclipse的离线汉化
  • oldjun 检测网站的经验
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • windows下mongoDB的环境配置
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 从伪并行的 Python 多线程说起
  • 代理模式
  • 记一次用 NodeJs 实现模拟登录的思路
  • 离散点最小(凸)包围边界查找
  • 每天一个设计模式之命令模式
  • 前端知识点整理(待续)
  • 三栏布局总结
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (已解决)什么是vue导航守卫
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET Framework杂记
  • .net反编译的九款神器
  • @31省区市高考时间表来了,祝考试成功
  • @AliasFor注解
  • @RequestMapping 的作用是什么?
  • [20181219]script使用小技巧.txt
  • [ai笔记9] openAI Sora技术文档引用文献汇总
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [Android学习笔记]ScrollView的使用
  • [Angular 基础] - 指令(directives)