J'ai écrit du code en python qui fonctionne très bien et j'essayais de l'implémenter en Java et j'ai quelques légers problèmes. Il est un simple 21 question à l'aide retours en arrière qui prend une entrée de chaîne de l'utilisateur tel que « 1 9 10 »Conversion du code Python en Java
Voici le code python:
def twentyone(nums, stack = [], answer = set()):
for index, num in enumerate(nums):
new_stack = stack + [num]
total = sum(new_stack)
if total == 21:
answer.add(tuple(new_stack))
elif total < 21:
twentyone(nums[index + 1:], new_stack, answer)
return answer
user_input = input()
list_format = [int(x) for x in user_input.split()]
answer = twentyone(list_format)
if len(answer) == 0:
print("No combination of numbers add to 21")
for solution in answer:
print("The values ", end = "")
for number in solution:
print("{} ".format(number), end = "")
print("add up to 21")
et voici mon code java (jusqu'à présent) Fondamentalement, je ne peux pas contourner écrire des problèmes de récurrence java sans initialisation variable dans les paramètres.
i.e. def twentyone(nums, stack = [], answer = set()):
Ma question est, comment puis-je traiter avec java sans retours en arrière initialisation variable dans la méthode que je vais faire les appels récursifs sur?
Quel est le problème? Initialiser les avant d'appeler la fonction? – Idos
Mais si je déclare une pile avant l'appel de la fonction et en fait un attribut d'objet, dans chaque instance récursive, la pile ne serait-elle pas la même? J'ai besoin que chaque pile de chaque appel récursif soit différente. Peut-être que j'ai fait trop de python, pourriez-vous me dire quoi dans mon code java pour que ça marche? – user7404408