当我们谈论分而治之时,我们总是使用递归。我已经知道分而治之是一种算法设计技术,但我有一个问题:
所有分而治之的算法都是递归的,或者换句话说,分而治之的思想在所有的递归中都有使用吗?
我很困惑 。
当我们谈论分而治之时,我们总是使用递归。我已经知道分而治之是一种算法设计技术,但我有一个问题:
所有分而治之的算法都是递归的,或者换句话说,分而治之的思想在所有的递归中都有使用吗?
我很困惑 。
如果我正确理解您的问题..所有分治算法本质上都是递归的吗?是的!
根据定义
在实践中应用分而治之算法分为三个步骤:
但是,如果您关心实现部分......那么递归(虽然更优雅和简单)不是唯一的方法。
二分搜索是分而治之范式的著名实例,这里是该算法的迭代实现。
//binary search for x, in array A[1 .. N]
min := 1;
max := N;
repeat
mid := (min+max) div 2;
if x > A[mid] then
min := mid + 1;
else
max := mid - 1;
until (A[mid] = x) or (min > max);