整理学数据结构的一些笔记(一)
一、数据结构的部分铺垫
-
在计算机科学中,除非有特别的的声明,所有的对数都是以2为底的。
-
对数的换底公式:logAB = (logcB)/(logcA)。
-
模运算:如果N整除A - B,那么就说A与B模N同余,记为A≡B(mod N).
例:81≡61≡1(mod 10).
若A≡B(mod N), 则A+C≡B+C(mod N) AD≡BD(mod N)
-
递归简论:当一个函数用它自己来定义时就称为是递归的。C允许函数递归。例:
int F(int x ) { If(x==0) return 0; else return 2*F(x-1) }
C的递归函数若无基准情况,是毫无意义的。例中的基准情况即:F(0)=0.
递归的四个基本法则:
(1) 基准情形(base case)。你必须总要有某些基准的情形,它们不用递归就能求解。
(2) 不断推进(making progress)。对于那些需要递归求解的情形,递归调用必须总能够朝着产生基准情形的方向推进。
(3) 设计法则。假设所有的递