递归简论

来源:互联网 发布:d3.js官网demo 编辑:程序博客网 时间:2024/06/05 17:28

递归的四条基本法则

  1. 基准情形。必须总要有某些基准情形,他无需递归就能解出。
  2. 不断推进。对于那些需要递归求解的情形,每一次递归调用都必须要使状况朝向一种基准情形推进。
  3. 设计法则。假设所有的递归调用都能运行。
  4. 合成效益法则。在求解一个问题的同意实例时,切勿在不同递归调用中做重复性的工作。
    【Mark Allen Weiss–Data Structures Algorithm Analysis in Java】
    Demo:
public class PrintDigit {public static void main(String[] args) {    int n = 123456;    resolve(n);    System.out.println();    System.out.print("-----------------------");    System.out.println();    printOut(n);//递归输出分解后的数}//递归public static void printOut(int n){    if(n>=10)        printOut(n/10);    System.out.print(n%10+" ");}//顺序结构public static void resolve(int n){    int [] a= new int[Integer.bitCount(n)];    for(int i=0;n>0;i++)    {        a[i]=n%10;        n/=10;    }    for (int i = (a.length-1); i>=0; i--) {        System.out.print(a[i]+" ");    }}}

Result:

1 2 3 4 5 6 -----------------------1 2 3 4 5 6 

输出结果一样,但是递归代码简洁许多,而且递归策略是从第一位开始往下输出,而正常分解的话,还需要数组进行转换。

原创粉丝点击