今天了解了算法的鼻祖——欧几里得算法(辗转相除法),虽然这个算法是一个挺简单的算法,但是还是花了不少时间去弄懂,也算是体现出了我在算法上的不足。
算法如下:
int gcd (int p,int q)
{
printf("p=%d,q=%d\n",p,q);
if(p==0)
return q;
if(q==0)
return p;
if (p>q)
return gcd(p%q,q);
else
return gcd(p,q%p);
}
BTW,今天读了数学之美,又认识到了很多数学工具在解决实际问题的重要性,特别是概率论,让我受益匪浅。比如,语义识别最有效的方法不是词法分析,而是概率模型。