如何证明递归函数正确执行?
递归书写方法
Head -->1-->2-->3-->4-->5-->null
为何面试喜欢问链表(单向)
递归缺点:
递归 --> 非递归
Node CreateLinkedList(List<Integer> values)
循环不变式(loop invariant)
Var a, b;
While(){
}
循环书写方法
例如:二分查找
在二序数组中查找元素k,返回k所在下标
binarySearch([1, 2, 10, 15, 100], 15) == 3
二分查找思路:
在白板上写程序:白板、纸笔、Word文档、记事本
修改不便;缩进不便;对齐困难
心里不抵触; 先思考后写; 不要惧怕修改/重写
列表:
树:
栈/队列/优先队列
Map<K, V> / Set<K>
图:
用于证明断言对所有自然数成立
数学归纳法法则:
求证:1+2+3+4+...+n=n(n+1)/2
int sum(int n){
if (n == 1)
return 1;
return sum(n-1)+n;
}