一.指数
X A X B = X A + B X A X B = X A − B ( X A ) B = X A B X A + X A = 2 X A ≠ X 2 A 2 A + 2 A = 2 A + 1 X^AX^B=X^{A+B}\\\frac{X^A}{X^B}=X^{A-B}\\(X^A)^B=X^{AB}\\X^A+X^A=2X^A≠X^{2A}\\2^A+2^A=2^{A+1} XAXB=XA+BXBXA=XA−B(XA)B=XABXA+XA=2XA=X2A2A+2A=2A+1
二.对数
在计算机科学中,除非有特别说明,所有对数都是以2为底数
1.定义:
当且仅当 l o g X B = A , X A = B log_XB=A,X^A=B logXB=A,XA=B
2.性质:
l o g A B = log C B l o g C A ( c > 0 ) log_AB=\frac{\log_CB}{log_CA}\,(c>0) logAB=logCAlogCB(c>0)
l o g A B = l o g A + l o g B logAB=logA+logB logAB=logA+logB
l o g A B = l o g A − l o g B l o g ( A B ) = B l o g A l o g X < X ( X > 0 ) l o g 1 = 0 , l o g 2 = 1 , l o g 1024 = 10 , l o g 1048576 = 20 log\frac{A}{B}=logA-logB\\log(A^B)=B\,logA\\logX<X\,(X>0)\\log1=0,log2=1,log1024=10,log1048576=20 logBA=logA−logBlog(AB)=BlogAlogX<X(X>0)log1=0,log2=1,log1024=10,log1048576=20
三.级数
1.等比级数(几何级数):
∑ i = 0 N A i = A N + 1 − 1 A − 1 \displaystyle\sum_{i=0}^NA^i=\frac{A^{N+1}-1}{A-1} i=0∑NAi=A−1AN+1−1
如果 0 < A < 1 0<A<1 0<A<1,则 ∑ i = 0 N A i < 1 1 − A \displaystyle\sum_{i=0}^NA^i<\frac{1}{1-A} i=0∑NAi<1−A1且 lim N → ∞ ∑ i = 0 N A i = 1 1 − A \displaystyle\lim_{N\to\infty}\displaystyle\sum_{i=0}^NA^i=\frac{1}{1-A} N→∞limi=0∑NAi=1−A1
特别地, ∑ i = 0 N 2 i = 2 N + 1 − 1 \displaystyle\sum_{i=0}^N2^i=2^{N+1}-1 i=0∑N2i=2N+1−1
2.
∑
i
=
1
∞
i
2
i
=
2
\displaystyle\sum_{i=1}^\infty\frac{i}{2^i}=2
i=1∑∞2ii=2
3.算术级数:
∑ i = 1 N i = N ( N + 1 ) 2 ≈ N 2 2 \displaystyle\sum_{i=1}^Ni=\frac{N(N+1)}{2}≈\frac{N^2}{2} i=1∑Ni=2N(N+1)≈2N2
3. ∑ i = 1 N i 2 = N ( N + 1 ) ( 2 N + 1 ) 6 ≈ N 2 3 \displaystyle\sum_{i=1}^Ni^2=\frac{N(N+1)(2N+1)}{6}≈\frac{N^2}{3} i=1∑Ni2=6N(N+1)(2N+1)≈3N2
4. ∑ i = 1 N i k ≈ N k + 1 ∣ k + 1 ∣ ( k ≠ − 1 ) \displaystyle\sum_{i=1}^Ni^k≈\frac{N^{k+1}}{|k+1|}\,(k≠-1) i=1∑Nik≈∣k+1∣Nk+1(k=−1)
5.调和级数:
H N = ∑ i = 1 N ≈ l n N H_N=\displaystyle\sum_{i=1}^N≈ln\,N HN=i=1∑N≈lnN, H N H_N HN称为调和数
上述近似的误差趋近于 γ ≈ 0.57721566 γ≈0.57721566 γ≈0.57721566,称为"欧拉常数"(Euler’s Constant)
6. ∑ i = 1 N f ( N ) = N f ( N ) \displaystyle\sum_{i=1}^Nf(N)=Nf(N) i=1∑Nf(N)=Nf(N)
7. ∑ i = n 0 N f ( i ) = ∑ i = 1 N f ( i ) − ∑ i = 1 n 0 − 1 f ( i ) \displaystyle\sum_{i=n_0}^Nf(i)=\displaystyle\sum_{i=1}^Nf(i)-\displaystyle\sum_{i=1}^{n_0-1}f(i) i=n0∑Nf(i)=i=1∑Nf(i)−i=1∑n0−1f(i)
四.模运算
1.定义:
如果 N N N可以整除 A − B A-B A−B,则称 A A A与 B B B模 N N N同余(Congruent),记为 A ≡ B ( m o d N ) A\equiv B(mod\,N) A≡B(modN)
直观地看,这意味着 A A A除 N N N和 B B B除 N N N的余数相同
2.性质:
若 A ≡ B ( m o d N ) A\equiv B(mod\,N) A≡B(modN),则 A + C ≡ B + C ( m o d N ) A+C\equiv B+C(mod\,N) A+C≡B+C(modN)且 A D ≡ B D ( m o d N ) AD\equiv BD(mod\,N) AD≡BD(modN)
五.常用的证明方法
1.数学归纳法
2.构造反例
3.反证法
六.递归
1.递归的基本法则:
①基准情形(Base Case):必须存在某些基准情形不需要递归就能求解(通常是在某个较小的值下的解)
②不断推进(Making Progress):递归调用必须能朝着产生基准情形的方向推进
③设计法则(Design Rule):假设所有递归调用都能运行(不要试图追踪递归调用)
④合成效益法则(Compound Interest Rule):在求解同1个问题的同1个实例时,不要在不同的递归调用中做重复性的工作
2.示例: F ( 0 ) = 0 , F ( X ) = 2 F ( X − 1 ) + X 2 F(0)=0,F(X)=2F(X-1)+X^2 F(0)=0,F(X)=2F(X−1)+X2
#include <stdio.h>
int F(int x) {
if (x==0) {
return 0;
} else {
return 2*F(x-1)+x*x;
}
}
int main(void) {
int x=5;
printf("%d\n",F(x));//结果:141
return 0;
}
法则4的1个反例: F ( 0 ) = F ( 1 ) = 1 , F ( N ) = F ( N − 1 ) + F ( N − 2 ) F(0)=F(1)=1,F(N)=F(N-1)+F(N-2) F(0)=F(1)=1,F(N)=F(N−1)+F(N−2)
Fib(int N) {
if (N<=1) {
return 1;
} else {
return Fib(N-1)+Fib(N-2);
//Fib(N-2)在Fib(N-1)中已经被计算过,但又被重复计算了1次;F(N-i)类似(i>2)
}
}