/** 递归的原则: 1. 基准情形; 2. 不断推进; 3. 设计法则; 4. 合成效益法则 2.递归实例:判断当传入的数字一直递归到1.组合成字符串输出 以下通过 错误和正确的写法对比学习 */
/** * 错误的递归 */ private String testRecursive1(String str,Integer inte){ str = str + inte.toString(); //如果满足条件就递归 if(inte>1){ inte = inte - 1; testRecursive1(str,inte); } return str; }
@Test public void testFun(){ System.out.println(testRecursive1("得到的数据是:",5)); } 测试结果如下:
得到的数据是:5
Process finished with exit code 0 在debug过程中可以看到先递归到 1,str=得到的数据是:54321,接着就return,在到父函数return,然后再祖父函数return。。。 最后return到第一级方法,即输出 “得到的数据是:5”
/** * 正确的可以return的递归函数 */ private String testRecursive2(String str,Integer inte){ str = str + inte.toString(); //如果满足条件就递归 if(inte>1){ inte = inte - 1; return testRecursive2(str,inte); } return str; }
@Test public void testFun(){ System.out.println(testRecursive2("得到的数据是:",5)); }
测试结果如下:得到的数据是:54321
Process finished with exit code 0