欧几里得算法:求两个整数的最大公因数gcd(m,n),根据gcd(m,n)=gcd(n,m%n)进行迭代,时间复杂度2logN(两次迭代后余数最多是原始值一半。若M>N,则M%N<M/2)。
高效幂运算算法:
public static long pow(long x,int n)
{
if(n==0)
return 1;
if(n==1)
return x;
if(n%2==0)
return pow(x,n/2)*pow(x,n/2);
else
return pow(x,n/2)*pow(x,n/2)*x;
}
时间复杂度logN。
栈的典型应用:
(1)平衡符号:用于检验成对的程序,如括号等;
(2)reverse polish记法:用于四则运算
(3)方法调用方法返回。