递归意味着分而治之吗?

时间:2015-01-16 03:14:57

标签: algorithm sorting

所有递归问题背后的原则是分而治之吗?例如:寻找阶乘,二分搜索......

而且,分裂和征服范式如何运作? ,为什么通过递归找到阶乘更容易?

1 个答案:

答案 0 :(得分:4)

  

递归意味着分而治之吗?

没有。递归意味着归纳:将问题移动到较小的范围,直到它可以解决(基本条件),然后一直应用增量变化。

划分和征服意味着将问题分成两个(或更多)小问题,这些问题将以递归方式解决。

  

为什么通过递归找到阶乘更容易?

它不容易"。有些人会认为它更直观,只是直觉不是可以在数学中正确定义的东西:)对我来说,以迭代方式(循环)解决阶乘是更直观的。

由于没有代码示例,所以没有答案是完整的,这里是递归和迭代实现(Python)中的阶乘:

def fact(n):
    if n == 0:
        return 1
    else: 
        return n * fact(n-1)

def fact_iter(n):
    res = 1;
    while n > 0:
        res *= n
        n -= 1
    return res