在研究范式"Разделяй и властвуй"时,遇到了一个用有效的双重递归计算斐波那契数的例子。这里一切都很清楚,第一步的任务被分成 2 个具有双重递归的子任务,有一个基本情况,实际上,这是一个范例"Разделяй и властвуй"。
这里出现了问题:
数字阶乘的简单递归计算问题是否属于同一范式"Разделяй и властвуй"?
def recur_factorial(n):
if n == 1:
return n
else:
return n*recur_factorial(n-1)
我认为不是,因为在这里我没有看到将任务划分为几个较小的子任务,尽管我清楚地看到基本情况和递归的存在。我想验证我的推理。
不,阶乘的递归计算只是简单地将问题降维到小于一维。没有选择两个(或几个)子问题,分别解决每个子问题,然后组合结果(归并排序就是一个很好的例子)。
斐波那契数列的例子也不是很成功,因为子任务不是独立的,结果,相同的值 \u200b\u200bare 计算了多次(这导致指数计算复杂度,尽管即使不使用数学技巧,斐波那契数可以线性计算)