1 回答
![?](http://img1.sycdn.imooc.com/5458453d0001cd0102200220-100-100.jpg)
TA贡献1772条经验 获得超5个赞
您的while循环不知道num值的变化,因此这里有一个infitite循环。这是由于num参数的本地作用域。当您将其传递给numberToPrint函数时,您正在使用其值的副本。而且,您永远不会用返回的值更新num。
public class recursion {
public static void main(String[] args) {
...
Integer num = 1;
while (num<= endNum){
num = numberToPrint(endNum, num); // update num value
}
}
public static int numberToPrint(int endNum, int num) {
System.out.print(num + ", ");
if (num >= endNum) {
return num;
}
return num + 1;
}
}
您在这里混合了递归和迭代。我会选择其中之一,因为在这里它们会产生大量指令。
通过递归,它看起来像这样:
Integer num = 1;
numberToPrint(endNum, num);
}
public static int numberToPrint(int endNum, int num) {
System.out.print(num + ", ");
if (num >= endNum) {
return num;
}
return numberToPrint(endNum, (num + 1));
}
添加回答
举报