计算机科学与编程导论 笔记 11.测试与调试

Introduction to Computer Science and programming 
Lecture 12: More about debuggin, knapsack problem, introduction to dynamic programming
 
1.找错的几个原则
 
a.变量的顺序是否正确
b.拼写错误,包括大小写拼写
c.忘记初始化变量
d.值和对象是否相等 ==
e.别名是否重复(深拷贝和浅拷贝)
f. 函数的返回值可能会修改实参的值
g.注意实际运行的程序是否希望运行的程序
f.调试代码,而不是注释,不要过分相信注释
h.找别人来看看自己的代码或者把自己的程序解释给别人听
i.走开休息一段时间,再回来
j.欲速则不达,别抱着试试的态度急急忙忙地修改,问问自己第一个想到的方案能够解决所有问题?解决这个问题会带来新的问题吗?
k.代码并不是越长越好
l.保存旧版本的代码(使用git软件),否则你会发现调试4个小时之后的版本还不如4小时之前的
m.记录自己犯过的错,不要再次浪费你的时间
 
2.背包问题
a.解决问题的方法是依靠别人的思路(也许前人花了50年总结出来了很好的方法,没有必要去闭门造车),如果你积累的多了,那么以后遇到类似的问题你就有解决方案了。
b.贪婪算法 greedy algorithm 每一步都是对自己最优的
c.穷举算法 exhaustive enumeration 列出所有的可能性选择最好的,对于指数增长的可能性,穷举法并不好
d.Dynamic programming 动态规划,这个Dynamic 只是个名字,没有特别的含义。斐波拉契的递归函数的调用就是指数增长的,overlapping subproblems
 
 
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/izongjun/p/9211583.html