递归算法之全排列

递归:就是通过不断调用自身来得到最终的结果。既然是不断的调用自身,那么肯定就有一个终止调用自身退出的条件,相当于只要递归几次就停止的意思。至于终止条件,分为正向终止逆向终止

逆向终止:就是从未知的条件开始递归,直到找寻到的已知的条件,停止递归并开始返回。一个很常见的例子就是求幂了

int qiumi(int num) {
      if(num = 1) {
           return 1;
      }else {
           returen num*qiumi(num-1);
      }
}
分析这段代码,num=1就是这个递归的终止条件,整个过程就是

正向递归:从一开始就已经不需要去寻找终止的条件,已经很明确的知道递归的次数并且开始递归自身,得到需要的结果。似乎和逆向递归没什么区别,个人总结而已。还是举一个组合的经典例子

       如果一个字符组合的话,比如a,那就是它自身;字符ab的组合有ab,ba;字符abc的组合有abc,acb,bac,bca,cba,cab,那么abcd呢?



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值