函数调用自身称为递归(Recursion),在计算机科学指将问题分解为同类的子问题来解决的方法。
分治(Divide and Conquer),指将问题分而治之,通过分成多个子问题来简化求解,最终将子问题的解合并成原问题的解。
递归的一般形式如下:
int func(传入数值) { if (终止条件) return 最小子问题解; return func(缩小规模); } |
比如使用递归来实现快速排序:
void quickSort(int a[], int left, int right) { if(left >= right) { return; } int mid = partition1(a, left, right); quickSort(a, n, left, mid-1); quickSort(a, n, mid+1, right); } |
递归&分治应用:
汉诺塔问题。