जांच इस स्काला कोड:यह पूंछ रिकर्सिव क्यों है?
def rec(n: Int) {
if (n > 1) {
val d = n/2
rec(d)
// if (d > 1) // abort loop
rec(n/d)
}
}
इस कोड को एक अंतहीन लूप में परिणाम होगा। पूंछ रिकर्सिव ऑप्टिमाइज़ेशन के कारण मुझे स्टैक ओवरफ्लो एरर नहीं मिलता है।
jad साथ decompiled मैं इस जावा कोड मिला:
public void rec(int n)
{
int d;
for(; n > 1; n /= d)
{
int i = n;
d = i/2;
rec(d);
}
}
पाश विधि ही कहता है इसलिए मैं पूंछ कॉल स्थिति समझ में नहीं आता की अंतिम पंक्ति में। कोई भी जो इसे समझा सकता है?
यह सहायक होगा 1.http: //www.cs.wayne.edu/~artem/main/teaching/csc3200ss2006/slides/recursion/types.html 2.http: //stackoverflow.com/questions/ 105,834/करता है-JVM-रोकने पूंछ-कॉल-अनुकूलन –