之前说过,算法的主题就是循环或者递归。每一次循环或者递归都是解决了问题的一部分,使得问题的规模有所减小。问题越来越小,循环变量和递归参数不断收敛,以至循环退出或者递归退出。
所以,一定要从这个角度去思考,每次循环或递归使得问题规模变小了吗,怎样的变小、收敛,要向这个模式去套。
任何算法,写出来就是几个主要变量,一个循环体/递归,每次循环变量/递归参数变化,趋向某个点,循环/递归退出。所以,一个算法,可以用主要变量,循环条件,循环体这些要素去描述,而不是完全靠空间想象力去推演。前者纲举目张,简练,后者很费劲。