Я написал программу для возврата списка, содержащего списки подмножеств заданного массива, с использованием обратного отслеживания и рекурсии, я назвал эту функцию subset типа void:
Я написал программу для возврата списка, содержащего списки подмножеств заданного массива, с использованием обратного отслеживания и рекурсии, я назвал эту функцию subset типа void: [code]import java.util.ArrayList; public class Main{ public static void main(String[] args) { ArrayList nums = new ArrayList(); List list= new ArrayList(); int[] arr = {2,3,5}; subset(list,nums,arr,0); // System.out.println(list); } static void subset(List list, ArrayList nums, int[] arr, int index){ if(index==arr.length){ list.add(nums); return ; } int c = arr[index]; nums.add(c); subset(list,nums,arr,index+1); // nums.remove(nums.size()-1); subset(list,nums,arr, index+1); // return ; } } [/code] Ожидания: [code]output={[],[],[],[],[],[],[],[]} expected={[2,3,5],[2,3],[2,5],[2],[3,5],[3],[5],[]} [/code] Почему выдает пустые списки?
Я пытаюсь понять разницу между этими двумя методами рекурсии для перечисления комбинаций монет:
В первом методе я прошел строку через рекурсию:
def cc_list(amount, n, combination_string):
if amount == 0:
print( Combi , combination_string )
return...
Я пытаюсь понять разницу между этими двумя методами рекурсии для перечисления комбинаций монет:
В первом методе я прошел строку через рекурсию:
def cc_list(amount, n, combination_string):
if amount == 0:
print( Combi , combination_string )
return...
Я не могу понять, что в этом коде заставляет его повторяться так много раз. Буду признателен за любые советы, как этого не делать.
Я ожидал, что количество итераций будет намного меньше 999.
Я попробовал чтобы найти эту проблему в StackOverflow и...
Я не могу понять, что в этом коде заставляет его повторяться так много раз. Буду признателен за любые советы, как этого не делать.
Я ожидал, что количество итераций будет намного меньше 999.
Я попробовал чтобы найти эту проблему в StackOverflow и...