मैं अपने जावा क्लास के लिए होमवर्क असाइनमेंट पर काम कर रहा हूं और मैं इसे काम करने के लिए रिकर्सन (आवश्यक) सेट अप करने के तरीके पर फंस गया हूं। हमें उपयोगकर्ता को कई 'एन' प्रतियोगियों के लिए संकेत देना चाहिए (मान लीजिए कि यह 2 की शक्ति होनी चाहिए, हमें वैध उपयोगकर्ता इनपुट की जांच करने की आवश्यकता नहीं है)। प्रत्येक टीम को केवल एक बार हर दूसरी टीम खेलना चाहिए। एन = 8 के लिए आउटपुट होना चाहिए:जावा टूर्नामेंट अनुसूची रिकर्सन
1 2 3 4 5 6 7 8
2 1 4 3 6 5 8 7
3 4 1 2 7 8 5 6
4 3 2 1 8 7 6 5
5 6 7 8 1 2 3 4
6 5 8 7 2 1 4 3
7 8 5 6 3 4 1 2
8 7 6 5 4 3 2 1
विधि को पास करने की अनुमति देने वाला एकमात्र पैरामीटर 'int n' है। तो यदि 16 टीमें (यानी एन = 16) हैं, तो दूसरा कॉल 8 पास होगा, फिर 4 पास होगा, फिर 2, और अंत में 1.
तो, इस पर आधारित, मुझे पता है कि हर दूसरी लाइन बस फ्लिप करती है संख्याओं की प्रत्येक जोड़ी। तो 2^0 के लिए, केवल एक टीम है। 2^1 के लिए, यह है:
1 2
2 1
2^2 के लिए, यह 4 टीमों है, लेकिन टीमों 3 और 4 टीमों 1 और 2 के रूप में ही प्रत्यावर्तन तब है, तो आप उन्हें स्वैप तो 3 और 4 में आ 1 और 2 और उसके बाद इससे पहले कि आप अलग-अलग जोड़ों फिर स्वैप:
1 2 3 4
2 1 4 3
3 4 1 2
4 3 2 1
तो तुम मूल रूप से 4 बराबर कोनों में आरेख विभाजित कर सकते हैं, और प्रत्येक दूसरे कोने एक दूसरे के बराबर होती है।
पिछले कुछ दिनों में मैंने अपने कोड में कई बदलावों को पार किया है, लेकिन यहां वह जगह है जहां मैं अभी हूं। यह वास्तव में एक कदम पीछे से है जहां से मैं था, लेकिन मैं मूल रूप से एक प्रारंभ पंक्ति और एक प्रारंभिक कॉल पास करने की कोशिश कर रहा था, लेकिन मुझे सूचित किया गया कि मुझे ऐसा नहीं करना चाहिए, और बस n recursively पास करें।
class MyArray {
final int MAXROW = 32, MAXCOL = 32;
int A[][]; //reference variable
int nR, nC; //number of integers in A, <= MAXSIZE
//constructor
MyArray() {
A = new int[MAXROW] [MAXCOL];
nR = nC = 0;
}
void schedule(int n) {
if (n > 1) {
schedule(n/2);
for (int r = 0; r < n/2; r++)
for (int c = 0; c < n/2; c++) {
A[r+n][c] = A[r][c+n];
A[r+n][c+n] = A[r][c];
}
}
}
void printA() {
printA(nC-1)
}
void printA(int n) {
if (n >= 0) {
printA(n-1);
for (int c = 0; c < nC; c++)
System.out.printf("%3d", (A[n][c]));
System.out.println();
}
}
"* केवल पैरामीटर मैं विधि को पारित करने के लिए अनुमति 'पूर्णांक एन' है। *" इस विधि, पुनरावर्ती एक होने की जरूरत है या कहना है कि परिदृश्य 'का समाधान (एन) {वापसी recursiveMethod (सुविधा देता है एक्स, वाई, जेड);} की अनुमति है? – Pshemo
मैं तुम्हें एक संकेत दे देंगे: इस समस्या को इसी तरह की है क्रमपरिवर्तन में लेकिन इसके बजाय तार और आप पात्रों के साथ काम कर रहा संख्या – Shang
@Shang यह समस्या एक पुनरावर्ती समारोह के साथ हल किया जाता है के साथ काम कर रहे हैं .... –