सबसे छोटा प्रोग्राम जो StackOverflow Error को फेंकता है [बंद]


75

एक प्रोग्राम लिखें जो StackOverflow Error या उपयोग की गई भाषा में समतुल्य है। उदाहरण के लिए, जावा में , प्रोग्राम को फेंक देना चाहिए java.lang.StackOverflowError

आपको ऐसे फ़ंक्शन को परिभाषित करने की अनुमति नहीं है जो खुद को या एक नए वर्ग ( mainजावा में युक्त एक को छोड़कर) को कॉल करता है । इसमें चयनित प्रोग्रामिंग भाषा की कक्षाओं का उपयोग करना चाहिए।

और यह त्रुटि को स्पष्ट रूप से नहीं फेंकना चाहिए।


4
मुझे समझ में नहीं आता "चयनित प्रोग्रामिंग भाषा की कक्षाओं का उपयोग करें"
राजकुमार जॉन वेस्ले

3
क्या किसी फ़ंक्शन को परिभाषित करना ठीक है जो इस तरह के आंतरिक फ़ंक्शन को कॉल करता है def s{def t=s;t}?
प्रिंस जॉन वेस्ले

12
अधिकांश भाषाओं में, कक्षाएं केवल एक विशेष प्रकार की डेटा संरचना होती हैं, न कि ब्रह्मांड का केंद्र। कई भी नहीं है है ऐसी बात।
को बंद करना

1
यहाँ मज़ेदार बात यह है कि जिन भाषाओं में टेल रिकर्सन एलिमिनेशन की आवश्यकता होती है (और इसे लागू करने वाले लोग जब भाषाओं को इसकी आवश्यकता नहीं होती है) --- --- जो बहुत वास्तविक अर्थों में बेहतर होती हैं --- इस पर नुकसान है। इसके संस्करण के लिए ट्विनइट का उत्तर लिंक है जो शुरुआती दिनों से स्टैक ओवरफ्लो पर मौजूद है।
dmckee

1
जावा डॉक से: एक स्टैक ओवरफ्लो होने पर फेंक दें क्योंकि एक एप्लिकेशन बहुत गहराई से पुनरावृत्ति करता है। docs.oracle.com/javase/6/docs/api/java/lang/…
jsedano

जवाबों:


90

बेगुन, १

मैं Befunge नहीं जानता, लेकिन ...

1

स्टैक ओवरफ्लो कोड गोल्फ से


21
स्पष्टीकरण: 1 एक संख्यात्मक शाब्दिक है जो सामने आने पर स्टैक पर धकेल दिया जाता है। Befunge में, कंट्रोल फ्लो तब तक इधर-उधर घूमता रहता है, जब तक @कि प्रोग्राम के अंत में उसका सामना न हो जाए ।
३०

6
मुझे नहीं पता था कि StackOverflow पर यह सवाल था। मैंने पोस्ट करने से पहले केवल इस साइट पर खोज की थी।
ट्रू सॉफ्ट

31
मैं यहाँ अपना जवाब देखने के लिए हल्का फुल्का हूँ।
पैट्रिक

4
यह <> में भी काम करता है।
क्रंचर

49

पायथन (2.7.3), 35 वर्ण

import sys
sys.setrecursionlimit(1)

यह ऑपरेशन स्वयं सफल होता है, लेकिन स्क्रिप्ट और इंटरैक्टिव दोनों तुरंत RuntimeError: 'maximum recursion depth exceeded'बाद में परिणाम के रूप में फेंक देंगे ।

एलसर के जवाब से प्रेरित।


मैंने इसके बजाय अपने समाधान के रूप में डालने के बारे में सोचा था, लेकिन यह सुनिश्चित नहीं था कि त्रुटि को एक अतिप्रवाह माना जा सकता है। हालांकि, अनिवार्य रूप से, यह वही है जो सही है?
एलसर

2
@ वेलसर: मुझे लगता है कि स्टैक को ओवरफ्लो करने के दो तरीके हैं: स्टैक का उपयोग किया गया हिस्सा बड़ा करें, या स्टैक का अप्रयुक्त भाग छोटा करें। यदि आप पानी के साथ बाल्टी भरने की कल्पना करते हैं, तो आप अधिक पानी जोड़कर इसे ओवरफ्लो कर सकते हैं, लेकिन आप बाल्टी को सिकोड़कर इसे ओवरफ्लो भी कर सकते हैं।

19

Coq

Compute 70000.

70000S (S ( ... (S O) ...))70000 के साथ बस के लिए चीनी है S। मुझे लगता है कि यह टाइप चेकर है जो स्टैक ओवरफ्लो का कारण बनता है।

यहाँ एक चेतावनी है जो कमांड निष्पादित होने से पहले छपी है:

Warning: Stack overflow or segmentation fault happens when working with large
numbers in nat (observed threshold may vary from 5000 to 70000 depending on
your system limits and on the command executed).

2
कि आपको लगता है कि Coq एक अविश्वसनीय रूप से गूंगा भाषा है ... अजीब हो सकता है ...
वामावर्त बंद कर दिया

1
@leftaroundabout वास्तव में नहीं। नेट प्रकार एक प्रकार का स्तर पीनो अंक है जो कि एक लिंक्ड सूची के रूप में कार्य करना चाहिए
FUZxxl

1
@FUZxxl: मेरी टिप्पणी विडंबना नहीं थी। यदि आप शास्त्रीय तर्क को उस वाक्य में शामिल करना चाहते हैं, या रचनात्मक बने रहना चाहते हैं, तो अपने लिए निर्णय लें ...
काउंटरक्लॉकविस

2
@leftaroundabout उफ़ ... क्षमा करें। मैं यह भूल गया कि मार्कडाउन पार्सर हमेशा उन अच्छे & lt; विडंबना & gt; -टैग को खाता है।
फ़ूजएक्सएक्सएल

19

जावा - ३५

class S{static{new S();}{new S();}}

क्या ओपी ने कोई नई कक्षाएं नहीं बताईं? मैं public static void mainवहाँ नहीं देखता । या मैं सिर्फ जावा को समझने में असफल रहा हूँ?
ब्रैडन बेस्ट

4
@ B1KMusic कोई नई कक्षाएं नहीं हैं, केवल एक वर्ग (एस) है। कोड एक स्टेटिक इनिलाइज़र का उपयोग करता है, यह jvm के आंकड़े से पहले SO को फेंकता है क्योंकि कोई मुख्य विधि नहीं है। जावा 6 के साथ काम करता है
aditsu

1
मैं स्टैटिक ब्लॉक को समझता हूं। लेकिन अगला ब्लॉक क्या है?
निकोलस बारबुल्सको

1
@ एनकोलसबर्बुल्सको यह एक प्रारंभिक ब्लॉक है, इसे तब निष्पादित किया जाता है जब आप एक नया उदाहरण बनाते हैं।
aditsu

1
@LuigiCortese मुझे लगता है कि यह केवल जावा 6 या पुराने के साथ काम करता है
aditsu

19

जावास्क्रिप्ट 24 वर्ण

ब्राउज़र आश्रित उत्तर (एक्सेस होना चाहिए apply):

eval.apply(0,Array(999999))
  • eval सबसे छोटा वैश्विक फ़ंक्शन नाम था जिसे मैं पा सकता था (किसी को पता है कि कम है?)
  • applyसरणी को फ़ंक्शन पैरामीटर में बदलने की अनुमति देता है, पहला पैरामीटर फ़ंक्शन का संदर्भ ( this)
  • Array(999999)सूचीबद्ध लंबाई के साथ एक सरणी बनाएगा। यकीन नहीं है कि अधिकतम तर्क क्या हैं, लेकिन यह इससे कम है, और इससे अधिक है99999

IE9:

SCRIPT28: Out of stack space 
SCRIPT2343: Stack overflow at line: 20 

Chrome 24:

Uncaught RangeError: Maximum call stack size exceeded 

फायरफॉक्स 18

RangeError: arguments array passed to Function.prototype.apply is too large

नोट - जावास्क्रिप्ट की एकल पिरोया प्रकृति के कारण, अनंत लूप यूआई को लॉक करते हैं और कभी भी अपवाद नहीं फेंकते हैं।

while(1);
for(;;);

न ही इनमें से कोई अर्हता रखता है।

अद्यतन - यह तीन वर्णों को हटाता है:

eval.apply(0,Array(1e7))

एमडीएन का कहना है कि evalयह सबसे छोटा है।
पीटर टेलर

5
eval.apply(0,Array(1e6))3 9e9
चार्ट

1
applyएक मानक ECMAScript सुविधा है। ब्राउज़र पर निर्भर कुछ भी नहीं है। जब तक आप वास्तव में पुराने ब्राउज़रों के बारे में बात कर रहे हैं, लेकिन यह काल्पनिक नेटस्केप 2 में applyवैसे भी काम नहीं करेगा , क्योंकि Arrayक्लास नेटस्केप 2 में मौजूद नहीं है
कोनराड बोरोस्की

1
ES6 में नया सबसे छोटा:eval(...Array(9e9))
पैट्रिक रॉबर्ट्स

1
संभवतः गैर-मानक, क्रोम में कंसोल से फेंकता है। dir.apply(0,Array(1e7));
पॉल जे

17

पायथन 2.7 (12 वर्ण)

exec('{'*99)

«s_push: पार्सर स्टैक ओवरफ़्लो» में परिणाम


4
मुझे मिलता हैSyntaxError: unexpected EOF while parsing
मार्टिन थोमा

1
exec('{'*101)मेरे साथMemoryError
मार्टिन थोमा

4
Python2 में, execएक स्टेटमेंट है, इसलिए आप बस इस्तेमाल कर सकते हैं exec'{'*999(99 पर्याप्त नहीं लगता है)
gnibbler

MemoryError को ट्रिगर करने के लिए आपको कम से कम 100 की आवश्यकता होती है। और वह over स्टैक ओवरफ्लो
noɥʇʎԀʎz

13

गणितज्ञ, 4 वर्ण

x=2x

$ RecursionLimit :: reclim: 1024 की पुनरावृत्ति की गहराई पार हो गई। >>


1
"आप स्वयं को कॉल करने वाले फ़ंक्शन को परिभाषित नहीं कर सकते हैं"
टॉमस

13
यह एक फंक्शन नहीं है, यह एक वैरिएबल है (जब तक कि ऐसा बिल्कुल नहीं है कि यह कैसा दिखता है)।
AMK

आपने मेरा विचार लिया।
21

12

क्लोजर, 12 चरस

(#(%%)#(%%))

उत्तर में चल रहा है:

user=> (#(%%)#(%%))
StackOverflowError   user/eval404/fn--407 (NO_SOURCE_FILE:1)

यह मुझे लैम्ब्डा कैलकुलस एक्सप्रेशन की याद दिलाता है (\x.xx)(\x.xx), लेकिन मैं क्लोजर को अच्छी तरह से नहीं जानता कि यह सुनिश्चित करने के लिए कि यह क्या हो रहा है। मैं यह भी नहीं देखता कि पूर्वोक्त अभिव्यक्ति का परिणाम एक स्टैक ओवरफ्लो में क्यों होगा, इसलिए शायद आप वाई-कॉम्बिनेटर के साथ कुछ चालबाजी कर रहे हैं? यह उत्तर मुझे और एक स्पष्टीकरण को रुचिकर बनाता है।
ज़ीवेई

12

जावा - 113 वर्ण

मुझे लगता है कि यह "नो सेल्फ-कॉलिंग विधियों" नियम की भावना के भीतर है। यह स्पष्ट रूप से नहीं करता है, और यह जावा भाषा के निर्माण से भी गुजरता है।

public class S {
    public String toString() {
        return ""+this;
    }
    public static void main(String[] a) {
        new S().toString();
    }
}

संघनित संस्करण:

public class S{public String toString(){return ""+this;}public static void main(String[] a){new S().toString();}}

9
खैर, ""+thisवास्तव में है ""+this.toString(), इसलिए विधि खुद को बुलाती है।
ट्रू सॉफ्ट

1
@TrueSoft बहुत यकीन है कि जावा StringBuilderवहाँ एक वस्तु में फेंकता है । toStringसंभावना वहाँ से बुलाया जाएगा।
क्रन्चर

1
जब तक कंपाइलर और ऑप्टिमाइज़र किया जाता है, तब तक toString()विधि समाप्त हो जाती हैpublic java.lang.String toString() { return this.toString(); }
जोनाथन कॉलन

12

सी, 19 बाइट्स

main(){int i[~0u];}

4
@Thomas हाँ, यह है किसी भी मशीन जहां स्थानीय चर ढेर पर आवंटित किए जाते हैं पर एक ढेर अतिप्रवाह। चूंकि सी भाषा में स्टैक ओवरफ्लो इंडिकेशन की कोई अवधारणा नहीं है (यह सभी अपरिभाषित व्यवहार है, उनमें से एक खुद को सेगफॉल्ट के रूप में प्रकट करता है), यह मूल आवश्यकता के अनुरूप है।
जेन्स

ठीक है, क्षमा करें, स्वीकार कर लिया गया।
टॉमस

3
यह main.c:1:16: error: size of array 'i' is negativeमेरे लिए gcc पर 4.8.1 देता है। अहस्ताक्षरित संस्करण main(){int i[~0U];}काम करता है।
Csq

4 जीबी स्टैक को मैन्युअल रूप से कॉन्फ़िगर करने के बाद मेरे लिए काम नहीं करता है।
फूजएक्सएक्सएल

@FUZxxl दिलचस्प; क्या आपकी बिट 32 बिट्स हैं? यदि हां, तो sizeof(i)16GB है। क्या प्रत्यय ulया ullप्रत्यय के इस्तेमाल से फर्क पड़ता है? कुछ प्रणालियाँ स्मृति को ओवर-कम कर देती हैं और केवल दुर्घटना हो जाती है यदि स्मृति को लिखा जाता है।
जेन्स

10

GolfScript (8 वर्ण)

{]}333*`

नतीजा:

$ golfscript.rb overflow.gs 
golfscript.rb:246:in `initialize': stack level too deep (SystemStackError)
from /home/pjt33/bin/golfscript.rb:130:in `new'
from /home/pjt33/bin/golfscript.rb:130:in `ginspect'
from /home/pjt33/bin/golfscript.rb:130:in `ginspect'
from /home/pjt33/bin/golfscript.rb:130:in `map'
from /home/pjt33/bin/golfscript.rb:130:in `ginspect'
from /home/pjt33/bin/golfscript.rb:130:in `ginspect'
from /home/pjt33/bin/golfscript.rb:130:in `map'
from /home/pjt33/bin/golfscript.rb:130:in `ginspect'
 ... 993 levels...
from (eval):4
from /home/pjt33/bin/golfscript.rb:293:in `call'
from /home/pjt33/bin/golfscript.rb:293:in `go'
from /home/pjt33/bin/golfscript.rb:485

मूल रूप से यह एक भारी नेस्टेड डेटा संरचना बनाता है और फिर इसे स्ट्रिंग में बदलने की कोशिश करते समय स्टैक को ओवरफ्लो करता है।


मेरे लिए, यह एक त्रुटि नहीं है, लेकिन [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[""]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ]]]]]]]]]]]]]]]]] (and so on, output too long for comments)
प्रोग्राम

@ProgramFOX, कुछ मूल्य होगा जो आप के 333साथ बदल सकते हैं और यह टूट जाएगा। 333सबसे छोटा मूल्य था जो मेरे लिए टूट गया, लेकिन अगर आपके पास रूबी का एक अलग संस्करण है (या शायद एक अलग ओएस पर एक ही संस्करण है, जो मुझे पता है) तो यह अतिप्रवाह से पहले एक अलग संख्या में ढेर फ्रेम को संभाल सकता है।
पीटर टेलर

1
मेरी मशीन पर 3192 में टूट जाता है, इसलिए 6.?अभी भी वर्ण जोड़ने के बिना काम करता है।
डेनिस

10

x86 असेंबली, NASM सिंटैक्स, 7 बाइट्स

db"Pëý"

हेक्साडेसिमल में "Pëý" 50 EB FD है, और

_loop:
push eax
jmp _loop

x86 विधानसभा में।


8

रूबी, १२

eval"[]"*9e3

देता है

SystemStackError: stack level too deep

संभवतः प्रणाली-निर्भर, लेकिन आप अंतिम अंक ऊपर (अनुशंसित नहीं) को टक्कर देकर परिमाण के आदेश जोड़ सकते हैं।

स्पष्टीकरण के लिए संपादित करें: इसी तरह कुछ अन्य उदाहरणों से, यह एक स्ट्रिंग बनाता है [][][]... 9000 बार दोहराया जाता है, फिर इसका मूल्यांकन करता है: सही []को बाकी के लिए एक फ़ंक्शन कॉल के रूप में पार्स किया जाता है, और इसी तरह। यदि यह वास्तव में शुरुआत में मिल जाता है, तो यह एक आर्ग्यूमेंट एर्र फेंक देगा क्योंकि []एक ऐसी []विधि है जिसमें एक तर्क की आवश्यकता होती है, लेकिन मेरी मशीन नौ हजार से अधिक स्टैक होने से पहले एक त्रुटि फेंकती है।


पी: हम्म ... आईआरबी दुर्घटनाग्रस्त हो गया
दरवाज़े

कौन सा संस्करण? ruby1.9.2 फेंकता है "तर्कविरोध: गलत तर्क की संख्या (1..2 के लिए 0)"।
मैनटवर्क

एक पुराना ruby1.8.7 मिला । वहाँ पोस्ट कोड वर्णित के रूप में काम करता है।
मैनटवर्क

अजीब, यह मेरे 1.8.7, 1.9.2 और 1.9.3 पर काम करता है।
हिस्टोक्रेट

मैंने कहा होगाdef f;f;end;f
EMBLEM

8

Rebol (11 चार्ट)

do s:[do s]

पैदावार:

>> do(s:[do s])    
** Internal error: stack overflow
** Where: do do do do do do do do do do do do do do do do 
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do 
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do...

हालांकि रेबोल के पास फंक्शन, क्लोजर और ऑब्जेक्ट्स हैं ... यह उनमें से किसी को भी परिभाषित नहीं करता है। यह एक डेटा संरचना को परिभाषित करता है, जो कोड-जैसा-डेटा प्रतिमान में डीओ का उपयोग करके कोड के रूप में माना जा सकता है।

हम REPL के साथ "S क्या है" के प्रश्न की जाँच कर सकते हैं :

>> s: [do s]
== [do s]

>> type? s
== block!

>> length? s
== 2

>> type? first s
== word!

>> type? second s
== word!

DO इसे कभी किसी फ़ंक्शन में नहीं बदलता है, यह संरचना पर वर्तमान वातावरण में मूल्यांकनकर्ता को आमंत्रित करता है।


1
+1 ... मैंने यह नहीं देखा था कि मेरा उत्तर एक फ़ंक्शन को परिभाषित कर रहा था और यह नियमों के विरुद्ध था, लेकिन DO का उपयोग करने के लिए मेरे उत्तर को संपादित किया ... तो ध्यान दिया कि आप पहले से ही उस उत्तर को सबमिट कर चुके हैं। इसलिए मैंने बस मेरा डिलीट कर दिया, लेकिन जब से मैंने लिखा है कि यह एक वस्तु / फ़ंक्शन / क्लोजर को परिभाषित क्यों नहीं कर रहा है, तो मुझे लगा कि मैं स्पष्टीकरण आपके पास रखूंगा। इसके अलावा, मुझे लगता है कि डू डू करना मज़ेदार और लायक है। :-) आशा है कि यह ठीक है!
डॉ। रेब्बू

7

सी, 35 वर्ण

main(){for(;;)*(int*)alloca(1)=0;}

असाइन किए गए स्थान में कुछ भी क्यों संग्रहीत करें?
पीटर टेलर

1
इस स्थिति में, इस समस्या को हल करने में असंभव है C.
FUZxxl

3
@dmckee, सभी विभाजन दोष ढेर नहीं हैं, लेकिन मैं यह कहूंगा कि यह स्टैक क्षमता से अधिक होने का परिणाम है।
ugoren

1
@dmckee, alloca स्टैक से आवंटित करता है।
बदसूरत

1
@PeterTaylor: यह शायद कार्यान्वयन पर निर्भर करता है, लेकिन मेरे मामले alloca(1)में मूल रूप से अनुवाद किया गया है sub $1, %espताकि स्टैक को छुआ न जाए।
जॉब

7

कॉमन लिस्प, 7 अक्षर

#1='#1#

सुंदर ... मैं #1=(#1#)टर्मिनल के लिए और उपयोग करने की योजना बना रहा था (print #1=(#1#)), लेकिन आपका समाधान इतना बेहतर है।
प्रोटिस्ट

वास्तव में यह पढ़ने के समय में अतिप्रवाह नहीं होता है, केवल तब जब आप इसे प्रिंट करने का प्रयास करते हैं। तो 1 चरित्र अंतर से अलग, तुम्हारा कोई बेहतर नहीं है।
प्रोटिस्ट

आप सही कह रहे हैं, बस इसे संपादित करें। मुझे यकीन नहीं है कि अगर रीड-टाइम पर एक अतिप्रवाह का कारण है।
एरिक हैलिवेज़

वास्तव में, # # 1 = '# 1 # एक पढ़ने के समय के अतिप्रवाह का कारण बनता है
एरिक हैलिविकज़

7

अजगर - 11 वर्ण

exec'('*999

>>> exec'('*999
s_push: parser stack overflow
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
MemoryError

बहुत चालाक समाधान।
mbomb007

7

कैसियो कैलकुलेटर, 11 कीपेस

इस "भाषा" में बाइट्स / टोकन गिनना काफी कठिन है - मैंने शिफ्ट, अल्फा (दूसरी शिफ्ट की) को छोड़कर और =अंत में आवश्यक कुंजीपट की संख्या दी है - यह निश्चित रूप से प्रति बाइट प्रति 1 बाइट में फिट बैठता है।

एफएक्स -85 जीटी प्लस मॉडल पर परीक्षण किया गया , जो एक मानक, गैर-रेखांकन, "गैर-प्रोग्रामेबल" वैज्ञानिक कैलकुलेटर है। अन्य मॉडल काम करेंगे।

बस 11 घन जड़ों को ढेर करें:

3√ 3√ 3√ 3√
3√ 3√ 3√ 3√
3√ 3√ 3√

यह वर्गमूल के नीचे गुम संख्या के बारे में एक वाक्यविन्यास त्रुटि भी नहीं देता है।

यह वर्गमूल के साथ काम नहीं करता है।

वैकल्पिक रूप से, cos(31 बार दोहराएं ।

उत्पादन

Stack ERROR

[AC]  :Cancel
[<][>]:Goto

मेरा मानना ​​है कि यह एक स्टैक ओवरफ्लो के रूप में योग्य है। स्टैक लगता है छोटे ...


मैंने हमेशा सोचा था कि इसे स्टैक एरर कहा जाता है क्योंकि आपने बहुत सारी जड़ों को "स्टैक्ड अप" किया है: P
FlipTack

मेरा Canon कैलकुलेटर किसी भी ऑपरेटर के बारे में सिर्फ एक स्टैक त्रुटि देता है (यदि कम से कम +, -, * और / को छोड़कर) यदि इसे 25 बार या अधिक दोहराया जाता है। उदाहरण के लिए, यह स्टैक त्रुटि (सिंटैक्स त्रुटि के बिना) का कारण बनता है:(((((((((((((((((((((((((
Steadybox

7

FORTH, 13 बाइट्स

BEGIN 1 AGAIN

मूल्य स्टैक को ओवरफ्लो करता है


: X X ; X(9) ओवरस्टॉक रिटर्न स्टैक होना चाहिए
AMK

काम नहीं करेगा (कॉल को परिभाषित करते समय एक्स को परिभाषित नहीं किया गया है और यह एक आत्म संदर्भ / पुनरावृत्ति है
शाफ़्ट फ्रीक

@ratchetfreak, उन नियंत्रण शब्दों का उपयोग केवल एक संकलन स्थिति में किया जा सकता है, इसलिए उन्हें एक :... ;शब्द परिभाषा में लपेटने की आवश्यकता है । यह एक कार्यक्रम के रूप में निष्पादित करने के लिए कम से कम 6 अक्षर जोड़ता है, इसके लिए कम से कम 2 अधिक। आप इसे छोटा करने में सक्षम हो सकते हैं, लेकिन यहां एक उदाहरण है : F BEGIN 1 AGAIN ; F:। मैं यह सुझाव देता हूं क्योंकि सवाल पूछता है: "एक कार्यक्रम लिखें।" वैसे भी, आप के लिए फोर्थ के लिए एक upvote दिया, चार गिनती की परवाह किए बिना! :-)
डेरेन स्टोन

6

पोस्टस्क्रिप्ट, 7

{1}loop

उदाहरण के लिए।

$ gsnd
GPL Ghostscript 9.06 (2012-08-08)
Copyright (C) 2012 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
GS>{1}loop
Error: /stackoverflow in 1
Operand stack:
   --nostringval--
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   %loop_continue   --nostringval--   --nostringval--   false   1   %stopped_push   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   %loop_continue
Dictionary stack:
   --dict:1168/1684(ro)(G)--   --dict:0/20(G)--   --dict:77/200(L)--
Current allocation mode is local
Last OS error: No such file or directory
Current file position is 8
GS<1>

6

हास्केल (जीएचसी, कोई अनुकूलन नहीं), 25

main=print$sum[1..999999]

योग कुल में आलसी है। यह थनों के एक समूह को ढेर करता है, फिर अंत में उन सभी का मूल्यांकन करने की कोशिश करता है, जिसके परिणामस्वरूप एक ढेर अतिप्रवाह होता है।


मुझे हमेशा लगा कि योगा का उपयोग तह के साथ किया गया। ' है ना?
गर्वित हैकेलर


6

LaTeX: 8 अक्षर

\end\end

यह इस उत्तर में उपयोग किया गया समान कोड है । अनिवार्य रूप से, \endमैक्रो अपने आप को बार-बार फैलता है, जिसके परिणामस्वरूप स्टैक ओवरफ्लो होता है TeX capacity exceeded, sorry [input stack size=5000]:। अधिक विस्तृत विवरण यहां पाया जा सकता है


5

PHP 5.4, 33 वर्ण

for($n=1e5;$n--;)$a=(object)[$a];

यह तब स्टैक अतिप्रवाह का कारण बनता है जब नेस्टेड स्टडक्लास ऑब्जेक्ट स्वचालित रूप से नष्ट हो जाते हैं:

$ gdb -q php
Reading symbols from /usr/bin/php...(no debugging symbols found)...done.
(gdb) set pagination 0
(gdb) r -nr 'for($n=1e5;$n--;)$a=(object)[$a];'
Starting program: /usr/bin/php -nr 'for($n=1e5;$n--;)$a=(object)[$a];'
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x00000000006debce in zend_objects_store_del_ref_by_handle_ex ()
(gdb) bt
#0  0x00000000006debce in zend_objects_store_del_ref_by_handle_ex ()
#1  0x00000000006dee73 in zend_objects_store_del_ref ()
#2  0x00000000006a91ca in _zval_ptr_dtor ()
#3  0x00000000006c5f78 in zend_hash_destroy ()
#4  0x00000000006d909c in zend_object_std_dtor ()
#5  0x00000000006d9129 in zend_objects_free_object_storage ()
#6  0x00000000006dee53 in zend_objects_store_del_ref_by_handle_ex ()
#7  0x00000000006dee73 in zend_objects_store_del_ref ()
#8  0x00000000006a91ca in _zval_ptr_dtor ()
#9  0x00000000006c5f78 in zend_hash_destroy ()
#10 0x00000000006d909c in zend_object_std_dtor ()
#11 0x00000000006d9129 in zend_objects_free_object_storage ()
[...]
#125694 0x00000000006dee53 in zend_objects_store_del_ref_by_handle_ex ()
#125695 0x00000000006dee73 in zend_objects_store_del_ref ()
#125696 0x00000000006a91ca in _zval_ptr_dtor ()
#125697 0x00000000006c5f78 in zend_hash_destroy ()
#125698 0x00000000006d909c in zend_object_std_dtor ()
#125699 0x00000000006d9129 in zend_objects_free_object_storage ()
#125700 0x00000000006dee53 in zend_objects_store_del_ref_by_handle_ex ()
#125701 0x00000000006dee73 in zend_objects_store_del_ref ()
#125702 0x00000000006a91ca in _zval_ptr_dtor ()
#125703 0x00000000006c4945 in ?? ()
#125704 0x00000000006c6481 in zend_hash_reverse_apply ()
#125705 0x00000000006a94e1 in ?? ()
#125706 0x00000000006b80e7 in ?? ()
#125707 0x0000000000657ae5 in php_request_shutdown ()
#125708 0x0000000000761a18 in ?? ()
#125709 0x000000000042c420 in ?? ()
#125710 0x00007ffff5b6976d in __libc_start_main (main=0x42bf50, argc=3, ubp_av=0x7fffffffe738, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe728) at libc-start.c:226
#125711 0x000000000042c4b5 in _start ()

2
+1 क्या CodeGolf पर PHP की दूसरी उपस्थिति होनी चाहिए!
बोजंगल्स

5

क्यू / के (16 वर्ण)

यकीन नहीं है कि यह चुनौती की भावना में है, लेकिन मुझे नहीं लगता कि यह नियमों को तोड़ता है:

s:{f`};f:{s`};f`

यह शर्म की बात है C # इतना टाइपिंग की आवश्यकता है, आपने मेरे उत्तर को प्रेरित किया!
एंड्रयू ग्रे

5

एक ही शैली में एक गुच्छा:

अजगर, ३०

(lambda x:x(x))(lambda y:y(y))

जावास्क्रिप्ट, ३ 38

(function(x){x(x)})(function(y){y(y)})

लूआ, ४४

(function(x) x(x) end)(function(y) y(y) end)

अजगर x=lambda y:y(y);x(x)में कम (20 वर्ण) है। यह फ़ंक्शन पुनरावर्ती नहीं है। x किसी भी फ़ंक्शन को तर्क के रूप में कॉल करता है।
AMK

रूबी 2.0 -->x{x[x]}[->y{y[y]}]
जॉन ड्वोरक

गणितज्ञ#@#&[#@#&]
एलेफाल्फा

आप केवल पुनरावृत्ति का उपयोग कर रहे हैं, फिर जेएस में उदाहरण के लिए ऐसा क्यों नहीं करते: (फ़ंक्शन x () {x ()}) ()?
XEM

@xem आवश्यकताएँ कहते हैं कि कोई पुनरावृत्ति नहीं, यही कारण है।
डैनी

5

C #: 106 86 58 46 32 28

32 : गेटर्स सी # में आपकी मशीन को आसान बना सकते हैं:

public int a{get{return a;}}

1
सेटर की जरूरत नहींpublic int a {get{return a;}}
माइक कोडर

3
यह नियम का उल्लंघन करता है "आपको एक फ़ंक्शन को परिभाषित करने की अनुमति नहीं है जो खुद को कॉल करता है"। माना जाता है कि यह सिंटैक्स चीनी के पीछे छिपा हुआ है, लेकिन यह अभी भी चुनौती के बिंदु को याद नहीं कर रहा है।
पीटर टेलर

सेटर को जोड़ने से नियम में कुछ कमी आती है, क्योंकि अब आपके पास एक दूसरे को कॉल करने वाले दो कार्य हैं। लेकिन मुझे आश्चर्य है कि क्या अब भी इस चुनौती के पीछे ओपी के इरादों का उल्लंघन है?
एंड्रयू ग्रे

1
जैसा कि मैं समझता हूं कि यह भाषा के दुभाषिया या मानक एपीआई में कुछ अत्यधिक नेस्टेड पुनरावृत्ति को खोजने के लिए है। यह सी # में बहुत आसान नहीं हो सकता है।
पीटर टेलर

1
"सार्वजनिक तंत्र" क्यों? "int" ठीक वैसे ही काम करता है:int a { get { return a; } }
NPSF3000

5

INTERCAL, 12 बाइट्स

(1)DO(1)NEXT

स्पष्टीकरण:

NEXTINTERCAL का उप-संस्करण कॉल का संस्करण है (या, कम से कम, निकटतम आप प्राप्त कर सकते हैं)। यह NEXTस्टैक पर वर्तमान स्थिति को धक्का देता है और दिए गए लेबल पर कूदता है।

हालाँकि, यदि NEXTस्टैक की लंबाई 80 से अधिक है, तो आपको वह मिलता है जो स्टैक ओवरफ़्लो का बहुत अधिक अंतर संस्करण है:

ICL123I PROGRAM HAS DISAPPEARED INTO THE BLACK LAGOON
    ON THE WAY TO 1
        CORRECT SOURCE AND RESUBNIT

Ideone पर इसे आज़माएं।


6
"ब्लैक लैगून में बदल गया है" यह अर्नोल्ड क्या है?
Addison Crump

5

मॉर्निंगटन क्रिसेंट, 139 133

Take Northern Line to Bank
Take Circle Line to Temple
Take Circle Line to Temple
Take Circle Line to Bank
Take Northern Line to Angel

4

X86 असेंबली (एटी एंड टी), 33 अक्षर

ध्यान दें कि हालांकि मैं लेबल mainको जंप लक्ष्य के रूप में उपयोग कर रहा हूं , यह पुनरावर्ती कार्य नहीं है।

.globl main
main:push $0;jmp main

अच्छा विचार: यह एक प्रकार की पुनरावृत्ति है-बिना-पुनरावृत्ति!
एंड्रिया कोरबेलिनी

a86 का उपयोग कर: dd 0fdeb6010 वर्ण!
स्किज़

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.