下面的代码用于打印1到用户输入的数字之间的数字。但是,当一个值num计数到等于endNum-时,while循环应该不再调用“ numberToPrint”方法。
实际发生的是,在num等于endNum并且if-condition在“ numberToPrint”方法中变为真,并继续向前进时return,并没有停止在此处实现“ numberToPrint”方法,并立即切换到第23行,实际的递归会发生。
有什么问题吗?为什么不停止在return真正的if条件下?
//recursive printing of numbers from 1 to a user's number
import java.util.Scanner;
public class recursion {
public static void main(String[] args) {
System.out.print("Type a number from 1 to 20: ");
Scanner input = new Scanner(System.in);
Integer endNum = input.nextInt();
System.out.println();
Integer num = 1;
while (num!=endNum){
numberToPrint(endNum, num);
}
}
public static int numberToPrint(int endNum, int num) {
if (num == endNum) {
System.out.print(num + ", ");
return num;
} else {
System.out.print(num + ", ");
numberToPrint(endNum, (num + 1));
return num;
}
}
}
月关宝盒
相关分类