递归:就是通过不断调用自身来得到最终的结果。既然是不断的调用自身,那么肯定就有一个终止调用自身退出的条件,相当于只要递归几次就停止的意思。至于终止条件,分为正向终止和逆向终止。
逆向终止:就是从未知的条件开始递归,直到找寻到的已知的条件,停止递归并开始返回。一个很常见的例子就是求幂了
分析这段代码,num=1就是这个递归的终止条件,整个过程就是int qiumi(int num) { if(num = 1) { return 1; }else { returen num*qiumi(num-1); } }
正向递归:从一开始就已经不需要去寻找终止的条件,已经很明确的知道递归的次数并且开始递归自身,得到需要的结果。似乎和逆向递归没什么区别,个人总结而已。还是举一个组合的经典例子
如果一个字符组合的话,比如a,那就是它自身;字符ab的组合有ab,ba;字符abc的组合有abc,acb,bac,bca,cba,cab,那么abcd呢?