मैं जावा में एक गेम के लिए एक मिनीमैक्स एल्गोरिदम लिख रहा हूं, और, गति के उद्देश्यों के लिए, खेल स्थिति को बदल रहा हूं क्योंकि मैं निर्णय पेड़ के माध्यम से बार-बार काम करता हूं। हालांकि, इसमें उन चालों की सूची को संशोधित करना शामिल है जो मैं कर रहा हूं।क्या मैं एक सरणी को सुरक्षित रूप से बदल सकता हूं, अगर मैं प्रत्येक पुनरावृत्ति के बाद अपने मूल स्थिति में वापस आ जाता हूं?
public int minimax(int currentDepth) {
if (currentDepth == depth || board.legalMoves.isEmpty()) {
int eval = board.eval();
board.takeBack(1);
return eval;
}
int x = Integer.MIN_VALUE;
for (Tuple move : board.legalMoves) {
board.move(move);
x = max(x, -1*minimax(currentDepth+1));
board.takeBack(1);
}
return x
}
board.move()
विधि ArrayList legalMoves
mutates, लेकिन takeBack(1)
इसे वापस उसकी मूल स्थिति में लाता है। क्या इससे कोई समस्या हो सकती है?
बस आशा है कि आपके पास पेड़ तक पहुंचने वाले एक से अधिक धागे नहीं हैं ... – Reactormonk
आप यहां एक लूप का उपयोग क्यों कर रहे हैं? यह शुरुआती तत्व से परे कभी नहीं * फिर से शुरू होगा क्योंकि आप विधि से वापस आते हैं। – Vulcan
उपर्युक्त 'रिटर्न' भी 'कोड.takeBack (1)' को कॉल कोड के रूप में कॉल करता है, जो कुछ हद तक प्रश्न के उद्देश्य को मारता है। – Vulcan