В настоящее время я работаю над упражнением на codingbat
веб-сайте, в котором говорится:
Учитывая массив целых чисел, вычислить рекурсивно, если массив содержит 6. Мы будем использовать соглашение о рассмотрении только той части массива, которая начинается с данного индекса. Таким образом, рекурсивный вызов может передать index + 1 для перемещения вниз по массиву. Первоначальный вызов будет передан в индексе как 0.
Пример:
array6 ([1, 6, 4], 0) → истина
array6 ([1, 4], 0) → ложь
array6 ([6], 0) → истина
мое решение ниже, но по какой-то причине, когда мое if(nums[index] == 6)
истинно, он все еще выполняет код вelse block.
Мой вопрос:
Технически он не должен выполнять код внутри, else block
когда выполняется код внутри if statement
. так почему это сохраняется ?;
public static boolean array6(int[] nums, int index) {
if(nums.length == 0){
return false;
}
if(index == nums.length-1 && nums[index] != 6){
return false;
}
if(index == nums.length-1 && nums[index] == 6){
return true;
}
if(nums[index] == 6){
return true;
}else{
array6(nums,index+1);
}
return false;
}
Верните значение, полученное рекурсией. Изменять
array6(nums,index+1);
к чему-то вроде
return array6(nums,index+1);
Эта статья взята из Интернета, укажите источник при перепечатке.
Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.
я говорю два предложения