द्वारा सरणी में सबसे बड़ा सकारात्मक int ढूँढना मैंने जावा को रिकर्सन को कितनी अच्छी तरह से संभाला है, यह देखने के लिए, मैंने एक बहुत ही सरल प्रोग्राम को दोबारा लागू करने का निर्णय लिया, और थोड़ा सा आया।रिकर्सन
public class largestInIntArray {
public static void main(String[] args)
{
// These three lines just set up an array of ints:
int[] ints = new int[100];
java.util.Random r = new java.util.Random();
for(int i = 0; i < 100; i++) ints[i] = r.nextInt();
System.out.print("Normal:"+normal(ints,-1)+" Recursive:"+recursive(ints,-1));
}
private static int normal(int[] input, int largest) {
for(int i : input)
if(i > largest) largest = i;
return largest;
}
private static int recursive(int[] ints, int largest) {
if(ints.length == 1)
return ints[0] > largest ? ints[0] : largest;
int[] newints = new int[ints.length - 1];
System.arraycopy(ints, 1, newints, 0, ints.length - 1);
return recursive(newints, ints[0] > largest ? ints[0] : largest);
}
}
और वह ठीक काम करता है, लेकिन जैसा कि यह थोड़ा बदसूरत है मैं अगर वहाँ एक बेहतर तरीका था सोचा: यह है कि मैं क्या लेखन समाप्त हो गया है। अगर किसी के पास साझा करने के लिए कोई विचार/विकल्प/वाक्य रचनात्मक चीनी है, तो इसकी बहुत सराहना की जाएगी!
पी। यदि आप कहते हैं "लिस्प का उपयोग करें" तो आप कुछ भी नहीं जीतते (लेकिन सम्मान)। मैं जानना चाहता हूं कि यह जावा में अच्छा दिखने के लिए बनाया जा सकता है या नहीं।
* और कैसे अच्छी तरह से मैं संभाल प्रत्यावर्तन
Recursion बहुत दुर्लभ मामलों को छोड़कर यात्रा के रूप में सरल या जावा में कुशल होने के लिए नहीं जा रहा है। –
हाँ, लेकिन अगर कोई रिकर्सन की अंतरिक्ष जटिलता के लिए अच्छी तरह से तैयार होने जा रहा है, तो यह जावा डेवलपर है :) –
किसी भी भाषा में, आपको हमेशा सरणी की प्रतिलिपि बनाना होगा, या उस सरणी में इंडेक्स पास करना होगा। यदि आपका मतलब है "लिंक्ड सूची का उपयोग करके लिस्प", तो सुनिश्चित करें कि यह "जावा एक सरणी का उपयोग कर" से बेहतर है, लेकिन मुझे लगता है कि "एक्स एक लिंक्ड लिस्ट का उपयोग कर एक्स" किसी भी एक्स और वाई के लिए "ए सर का उपयोग कर" से बेहतर है। (सामान्य लिस्प में विस्थापित सरणी आपके लिए कुछ बहीखाता संभालती हैं, लेकिन मुझे नहीं लगता कि वे वास्तव में इस मामले को अधिक सरल बनाते हैं।) – Ken