其实对于递归与分治之间,经常有很多算法初学者弄不明白这两者的关系。
其实很简单,你就把递归看做一个特殊循环好了,而分治就是解决这个问题的途径。
递归与分治两者之间,压根就没有一毛钱相关,你完全可以把递归改成一个循环,再用分治法求解即可。
就例如经典的汉诺塔问题:
递归就是进行一个重复的循环while语句,而分治则是把这个问题分解成无数个重复移动的动作的思维方法。
其实对于这个问题,界限也并非如此清晰,你可以想象,如果我让一万个1相加
采用循环,直接循环加一万次
采用递归,递归循环一万次
采用分治,不停的划分(这里划分既可以使用递归也可以使用循环),两两相加。