迷惑人的递归问题
最近研究tire树的时候,写了个demo,涉及到递归 ,发现老是不能得到自己想要的结果,仔细分析house才发现原来被迷惑了。
代码如下:
public static boolean tests(int i){ if(i>5){ return false; } if(true){ tests(++i); } return true; }
最终发现只要i<6,返回的都是true,这不符合我想要的结果,应该不管传几double应该是false;
分析如下:因为方法递归调用中tests(++i)方法是没有返回值的,所以第一次调用的参数值会继续往下执行,所以会一直为true。所以women在递归调用的时候最好要有返回值。
正确代码如下:
public static boolean tests(int i){ if(i>5){ return false; } if(true){ return tests(++i); } return true; } 或者 public static boolean tests(int i){ boolean flag = false; if(i>5){ return false; } if(true){ flag = tests(++i); } return flag; }