Я пытаюсь получить номер булавки всего 4 цифры. Но цифры, которые меньше 1000, также печатаются. Что происходит в этом коде?Ошибка в рекурсивной функции
import java.util.Random;
public class Util {
public static int getRandomPINNumber(){
Random randomGenerator = new Random();
int randomNo = randomGenerator.nextInt(10000);
if(randomNo < 1000)
getRandomPINNumber(); //repeat if it is less than 1000,some bug here
return randomNo;
}
public static void main(String[] args){
for(int i = 0;i<100; i++)
System.out.println(getRandomPINNumber());
}
}
Выход
6413
1692
5734
105 <--- why 105 is getting printed, it should reevaluate the pin right?
4857
6348
1355
У вас есть конкретные причины, чтобы сделать это рекурсивно, а не просто используя цикл while? – Manu
Нет, совсем нет. Я поеду с батшбаем 3 балла в его ответе. Получил прохладный совет – Keerthivasan
Не 0001 действительный PIN-код? :) –