二分搜索递归算法:
int BinSrch(Type A[],int i, int n, Type x)
//A[i..n]是非递减排列 且 1<=i<=n;
//i是数组下标
//N是元素个数
//X是查找的数据
{
if(n==i) { if(x==A[i]) return i;
else return 0; }
else
{
int mid=(i+n)/2;
if(x==A[mid]) return mid;
else if(x<A[mid]) return BinSrh(A, i, mid-1, x);
else if(x>A[mid]) return BinSrh(A, mid+1, n, x);、
}
分治法的设计原理
分治法是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立,且与原问题结构相同。在解这些子问题时,又对每个子问题进行进一步的分解,直到某个阀值n0为止。递归的解这些子问题,再把各个子问题的解合并起来,就得到了原来问题的解。、
大整数乘法
Recursive_Miltiply(x,y)
{
if n=1
if (X=1)and(Y=1) return(1)
else return(0)
x1 =X的左边n/2位;
x0 =X的右边n/2位;
y1 =Y的左边n/2位;
y0 =Y的右边n/2位;
p = Recursive_Miltiply(x1+x0,y1+y0);
x1y1 = Recursive_Miltiply(x1,y1);
x0y0 = Recursive_Miltiply(x0,y0);
return x1y1*2n + (p-x1y1-x0y0)*2n/2+x0y0;
}