Учитывая приведенный ниже код, сколько звездочек ( в среднем ) будет отображаться по следующему алгоритму? Прослеживая первые несколько итераций, я определил, что это будет 99, но другие люди говорят мне, что это должно быть 100. Но почему это должно быть 100, а не 99? Когда nNum равно числам в диапазоне от 1 до 9, у нас есть около 10 звезд, распечатанных для каждого соответствующего сгенерированного случайного числа (9 звезд из случайных чисел от 1 до 9 и еще 1 звезда из 0, сгенерированная какслучайное число для предыдущего nNum, которое привело к nNum--). Но когда nNum = 10, у нас нет той 1 дополнительной звезды из «предыдущего» nNum, которая бы генерировала случайное число 0. (Надеюсь, то, что я здесь говорю, имеет смысл ...!)
public static void main(String[] args)
{
int nNum = 10;
printStar(nNum);
}
public static void printStar(int nNum)
{
if(randNumGen.nextInt(10)<1)
nNum--;
if(nNum>0)
{
System.out.print('*');
printStar(nNum);
}
}