递归算法

递归算法是一种常用的方法,其最大的特点就是在函数内部不断地调用自身函数,从而对问题进行求解
递归方法的举例如下:
下面是利用折线逼近曲线的算法示例。在该算法中,我们首先将曲线的首尾进行连接,然后求解曲线中到连线距离最大的点,作为折线的一个顶点。如果顶点到连线的距离大于设定的阈值,则重复上述的划分过程,直到折线的顶点到首尾连线的距离小于阈值为止。

void calMidIndex(int begin, int end, double threshold)
{
    indexList.push_back(begin);
    indexList.push_back(end);
    int mid = computeMidIndex(begin, end);// 计算折线顶点索引
    indexList.push_back(mid);
    double dist = computeMidDist(begin, end);//计算顶点到begin-end连线的距离
    if (dist >= threshold)
    {
        calMidIndex(begin, mid, threshold);// 使用递归方法进行求解
        calMidIndex(mid, end, threshold);// 使用递归方法进行求解
    }
    else
        return;
}
点赞