来个新人, 问了一个他迷茫的问题。
我不好直抒, 就把感觉写下来当回复了吧!
程序编码是一种 科学 + 艺术
科学是指要 - 厘清算法, 建立架构, 设定基准:
事件驱动, 顺序架构逻辑?
时间间格基准, 中断层级决定?
决定好主轴了后,
构思 例外状况? 错误如何处理?
再推演逻辑合不合理?
不合理就推倒重构!
先动脑想好, 再动手,
先下手不一定强,砍掉重练会秃头的。
那艺术在哪呢?数学
这世界最实诚的东西就是数学,会就会,不会就是不会。
算法就是数学, 递归就是最好的例子。
最大公约数 func(m,n) = func(n,m%n)
/**
* 最大公约数 func(m,n) = func(n,m%n)
* 1. 找重复(规模更小);n一直变化——子问题
* 2. 找变化;变化的量 作为参数
* 3. 找边界;出口
*/
int16_t func(int16_t m, int16_t n)
{
if(n == 0) {
return m;
}else {
return func(n,m%n);
}
}
算法算的好, 程序就能精简, 或是跑得快, 或是能塞进更小容量ROM. 这就是价值! 就能去追逐那百/千万年薪的梦吧!
如果梦不大, 可以考虑搞嵌入, 稳扎稳打。
老婆孩子热炕头, 安安稳稳的小日子。