StackOverflow 오류를 발생시키는 가장 짧은 프로그램


75

사용 된 언어의 StackOverflow 오류 또는 이에 상응하는 오류를 발생시키는 프로그램을 작성하십시오. 예를 들어, java 에서는 프로그램이 throw되어야합니다 java.lang.StackOverflowError.

자체 또는 새 클래스 ( mainjava에 포함 된 클래스 제외) 를 호출하는 함수를 정의 할 수 없습니다 . 선택한 프로그래밍 언어의 클래스를 사용해야합니다.

그리고 명시 적으로 오류를 던져서는 안됩니다.


4
"선택한 프로그래밍 언어의 클래스 사용"을 이해하지 못함
John Wesley 왕자

3
이런 내부 함수를 호출하는 함수를 정의해도 괜찮 def s{def t=s;t}습니까?
프린스 존 웨슬리

12
대부분의 언어에서 클래스는 우주의 중심이 아닌 특별한 종류의 데이터 구조 일뿐입니다. 많은 사람들은 그런 것을 가지고 있지 않습니다 .
counterclockwis 설정을 중단

1
여기서 재밌는 것은 꼬리 재귀 제거가 필요한 언어 (언어가 필요하지 않을 때이를 지원하는 구현)가 실제로 더 나쁘다는 점입니다. TwiNight의 답변 은 초기부터 스택 오버플로에 존재하는 버전으로 연결됩니다.
dmckee

1
java doc에서 : 응용 프로그램이 너무 심하게 반복되어 스택 오버플로가 발생하면 발생합니다. docs.oracle.com/javase/6/docs/api/java/lang/…
jsedano

답변:


90

빌 펀지, 1

나는 Befunge를 모른다. 그러나 ...

1

스택 오버플로 코드 골프에서


21
설명 : 1은 발생했을 때 스택으로 푸시되는 숫자 리터럴입니다. Befunge에서 제어 흐름 @은 프로그램이 종료 될 때까지 줄 바꿈 됩니다.
histocrat

6
StackOverflow 에이 질문이 있다는 것을 몰랐습니다. 게시하기 전에이 사이트에서만 검색했습니다.
True Soft

31
나는 내 대답을보기 위해 약간 아첨합니다.
Patrick

4
이것은> <>에서도 작동합니다.
Cruncher

49

파이썬 (2.7.3), 35 자

import sys
sys.setrecursionlimit(1)

이 작업 자체는 성공하지만 RuntimeError: 'maximum recursion depth exceeded'결과적으로 스크립트와 대화식 모두 즉시 발생합니다.

elssar의 답변에서 영감을 얻었습니다.


대신 내 솔루션으로 넣는 것에 대해 생각했지만 오류가 스택 오버플로로 간주 될 수 있는지 확실하지 않았습니다. 본질적으로 그것이 바로 그것이 무엇입니까?
elssar

2
@elssar : 스택을 오버플로하는 두 가지 방법이 있다고 생각합니다. 스택의 사용 된 부분을 더 크게 만들거나 스택의 사용하지 않는 부분을 더 작게 만듭니다. 물이 채워진 버킷을 상상할 경우 물을 더 추가하여 오버플로 할 수 있지만 버킷을 축소하여 오버플로 할 수도 있습니다.

19

코크

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 사실은 아닙니다. Nat 유형은 유형 목록 피노 숫자 로, 연결된 목록처럼 작동 해야 합니다.
FUZxxl

1
@ FUZxxl : 내 의견은 전혀 아이러니하지 않았습니다. 당신이 그 문장에 고전적인 논리를 포함 시키거나 건설적인 태도를 유지하고자한다면 스스로 결정하십시오 ...
counterclockwis를

2
@leftaroundabout 죄송합니다. 죄송합니다. 나는 마크 다운 파서가 항상 그 좋은 <irony> -tags를 먹는 것을 잊었다.
FUZxxl

19

자바-35

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

OP가 새로운 수업을 말하지 않았습니까? 나는 public static void main거기에 보이지 않습니다 . 아니면 Java를 이해하지 못하고 있습니까?
Braden Best

4
@ B1KMusic 새로운 클래스는없고 오직 하나의 클래스 (S) 만 있습니다. 코드는 정적 이니셜 라이저를 사용하며 jvm이 주요 방법이 없다는 것을 알기 전에 SO를 throw합니다. 자바 6에서 작동합니다.
aditsu

1
정적 블록을 이해합니다. 그러나 다음 블록은 무엇입니까?
Nicolas Barbulesco 2016 년

1
@NicolasBarbulesco 이것은 초기화 블록이며, 새로운 인스턴스를 만들 때 실행됩니다.
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 

크롬 24 :

Uncaught RangeError: Maximum call stack size exceeded 

파이어 폭스 18

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

참고 — 자바 스크립트의 단일 스레드 특성으로 인해 무한 루프로 인해 UI가 잠기고 예외가 발생하지 않습니다.

while(1);
for(;;);

이들 중 어느 것도 자격이 없습니다.

업데이트 — 세 문자를 깎습니다.

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

MDN은 이것이 eval가장 짧다고 말합니다 .
피터 테일러

5
eval.apply(0,Array(1e6))당신도 함께 갈 수 있습니다, 3 개 문자를 저장 9e9무료로
ThinkChaos

1
apply표준 ECMAScript 기능입니다. 브라우저에 의존하는 것은 없습니다. 정말 오래된 브라우저에 대해 이야기하지 않는 한 Netscape 2에는 클래스가 apply없기 때문에 가상 Netscape 2에서는 작동 Array하지 않습니다.
Konrad Borowski

1
ES6의 새로운 짧은 :eval(...Array(9e9))
패트릭 로버츠

1
아마도 비표준으로 콘솔에서 Chrome을 던집니다. dir.apply(0,Array(1e7));
Paul J

17

Python 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이 필요합니다. 그리고 ≠ stack overflow
noɥʇʎԀʎzɐɹƆ

13

Mathematica, 4 자

x=2x

$ RecursionLimit :: reclim : 1024의 재귀 깊이를 초과했습니다. >>


1
"자체를 호출하는 함수를 정의 할 수 없습니다"
Tomas

13
그것은 함수가 아니며 변수입니다 (모두 모양이 아닌 한).
AMK

당신은 내 생각을했다.
PyRulez

12

클로저, 12 자

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

repl에서 실행 :

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

이것은 람다 미적분학 표현을 생각 나게 (\x.xx)(\x.xx)하지만, 이것이 일어나고 있는지 확실하게 알 수있는 clojure를 잘 모르겠습니다. 또한 위에서 언급 한 표현식으로 인해 스택 오버플로가 발생하는 이유를 알지 못하므로 Y 조합으로 약간의 속임수를 사용하고 있습니까? 이 답변은 나에게 관심이 있으며 설명이 좋을 것입니다.
Zwei

12

자바-113 자

나는 이것이 "자기 호출 방법이 없다"라는 규칙의 정신 안에 있다고 생각한다. 명시 적으로하지 않으며 심지어 Java 언어 구조를 거치기도합니다.

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()그렇게하는 방법 자체를 호출합니다.
True Soft

1
@TrueSoft Java가 StringBuilder거기 에 객체를 던지는 것이 확실 합니다. toString아마 거기에서 호출 될 것입니다.
Cruncher

1
컴파일러와 옵티마이 toString()public java.lang.String toString() { return this.toString(); }
Jonathan Callen

12

C, 19 바이트

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

4
@Thomas 네, 그것은 이다 지역 변수는 스택에 할당 된 모든 시스템에서 스택 오버플로가. C 언어에는 스택 오버플로 표시의 개념이 없기 때문에 (모두 정의되지 않은 동작이며, 그중 하나는 segfault로 나타납니다.) 원래 요구 사항에 맞습니다.
Jens

알겠습니다. 죄송합니다.
Tomas

3
그것은 main.c:1:16: error: size of array 'i' is negativegcc 4.8.1에서 나 에게 준다 . 서명되지 않은 버전이 main(){int i[~0U];}작동합니다.
Csq

4GB 스택을 수동으로 구성한 후에는 작동하지 않습니다.
FUZxxl

@FUZxxl 재미있는; 당신의 정수는 32 비트입니까? 그렇다면 sizeof(i)16GB입니다. 사용합니까 ul또는 ull접미사가 차이를 만들어? 일부 시스템은 메모리를 초과 커밋하고 메모리에 쓰면 충돌합니다.
Jens

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

@ProgramFOX, 대체 할 수있는 가치가 있으며 333깨질 것입니다. 333가장 작은 값이었습니다.하지만 다른 버전의 Ruby (또는 다른 OS의 동일한 버전)를 사용하면 오버플로 전에 다른 수의 스택 프레임을 처리 할 수 ​​있습니다.
피터 테일러

1
내 컴퓨터에서 3192에서 끊어 지므로 6.?문자를 추가하지 않고도 작동합니다.
Dennis

10

x86 어셈블리, NASM 구문, 7 바이트

db"Pëý"

"Pëý"는 16 진수로 50 EB FD이며

_loop:
push eax
jmp _loop

x86 어셈블리에서.


8

루비, 12

eval"[]"*9e3

준다

SystemStackError: stack level too deep

아마도 시스템에 따라 다를 수 있지만 마지막 자릿수를 올림으로써 권장하지 않을 수도 있습니다.

설명 편집 : 다른 예제와 마찬가지로 [][][]9000 번 반복 되는 문자열을 만든 다음 평가합니다. 가장 오른쪽 []은 나머지에 대한 함수 호출로 구문 분석됩니다. 실제로 시작에 도달하면 하나의 인수가 필요한 메소드 []가있는 객체 이기 때문에 ArgumentError 가 []발생하지만 스택이 9 천을 초과하기 전에 약간의 오류가 발생합니다.


흠 ... 추락 IRB : P
Doorknob

어떤 버전? ruby1.9.2에서 "ArgumentError : 잘못된 수의 인수 (1.1의 경우 0)"가 ​​발생합니다.
manatwork 2013 년

오래된 ruby1.8.7을 찾았습니다 . 게시 된 코드는 설명대로 작동합니다.
manatwork

홀수, 1.8.7, 1.9.2 및 1.9.3에서 작동합니다.
histocrat

내가 말했을 것입니다def f;f;end;f
EMBLEM

8

레볼 (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...

Rebol에는 함수, 클로저 및 객체가 있지만 이것은 정의하지 않습니다. 이는 데이터 구조 코드 패러다임에서 DO를 사용하여 코드로 취급 할 수있는 데이터 구조를 정의합니다.

REPL을 사용하여 "What is S" 문제를 조사 할 수 있습니다 .

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

>> type? s
== block!

>> length? s
== 2

>> type? first s
== word!

>> type? second s
== word!

DO는 이것을 결코 함수로 바꾸지 않으며, 현재 환경에서 구조의 평가자를 호출합니다.


1
+1 ... 내 답변이 함수를 정의하고 규칙에 위배되는 것을 보지 못했지만 DO를 사용하도록 내 답변을 편집했습니다 ... 그러면 이미 그 답변을 제출 한 것으로 나타났습니다. 방금 삭제했지만 객체 / 함수 / 클로저를 정의하지 않는 이유를 작성 했으므로 설명을 귀하의 것으로 생각했습니다. 또한 할 일이 재미 있고 가치있는 일이라고 생각합니다. :-) 괜찮아요!
Dr. Rebmu

7

C, 35 자

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

할당 된 공간에 무엇을 보관해야합니까?
피터 테일러

1
이 경우 C에서는이 문제를 해결할 수 없습니다.
FUZxxl

3
@ dmckee, 모든 세그먼테이션 결함이 스택 오버플로는 아니지만 스택 용량을 초과 한 결과이기 때문에 이것이라고합니다.
ugoren

1
@dmckee, alloca 는 스택에서 할당합니다.
ugoren

1
@ PeterTaylor : 아마도 구현에 달려 있지만 내 경우 alloca(1)에는 기본적으로 sub $1, %esp스택에 닿지 않도록 변환됩니다 .
직업

7

공통 Lisp, 7 자

#1='#1#

아름답고 ... 나는 #1=(#1#)터미널 에 사용할 계획 (print #1=(#1#))이었지만 솔루션이 훨씬 좋습니다.
protist

실제로 그것은 인쇄하려고 할 때만 읽을 때 오버플로되지 않습니다. 따라서 1 문자 차이를 제외하고는 더 나은 것이 아닙니다.
protist

당신이 맞아요, 그냥 편집했습니다. 읽을 때 오버플로가 발생하는 방법이 있는지 잘 모르겠습니다.
Erik Haliewicz

. 사실, # 1 = '# 1 # 읽기 시간 오버 플로우 :-) 원인
에릭 Haliewicz에게

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 개의 키 누르기

이 "언어"에서 바이트 / 토큰을 계산하는 것은 매우 어렵습니다. Shift, Alpha (두 번째 Shift 키)를 제외하고 필요한 키 누르기 횟수가 주어졌으며 =결국 키 누르기 당 1 바이트에 맞습니다.

fx-85GT PLUS 모델에서 테스트되었으며, 표준 비 그래프, "프로그램 불가능"과학 계산기입니다. 다른 모델도 작동합니다.

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

작동하지 않습니다 (호출을 정의하는 동안 X가 정의되지 않으며 자체 참조 / 재귀입니다
ratchet freak

@ratchetfreak, 그 제어 단어는 컴파일 상태에서만 사용할 수 있으므로 :... ;단어 정의 로 감싸 야 합니다. 프로그램으로 실행하려면 6 자 이상, 2 자 이상이 추가됩니다. 더 짧게 할 수도 있지만 다음과 같은 예가 : F BEGIN 1 AGAIN ; F있습니다.. "프로그램을 작성하십시오."라는 질문이 있기 때문에 이것을 제안합니다. 어쨌든, 당신은 문자 수에 관계없이, 당신에게 Forth에 대한 찬성을주었습니다! :-)
대런 스톤

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

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];

중첩 된 stdClass 객체가 자동으로 파괴 되면 스택 오버플로가 발생합니다 .

$ 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
CodeGolf에서 PHP의 두 번째 모습은 +1입니다!
Bojangles

5

Q / K (16 자)

이것이 도전의 정신에 있는지 확실 하지 않지만 규칙을 위반 한다고 생각하지 않습니다 .

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

그것은 C #이 너무 많은 타이핑을 요구하는 수치입니다.
Andrew Grey

5

같은 스타일의 무리 :

파이썬, 30

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

자바 스크립트, 38

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

루아, 44

(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]}]
존 드보락

Mathematica#@#&[#@#&]
alephalpha

재귀를 사용하고 있다면 JS와 같이 왜 그렇게하지 않습니까? (function x () {x ()}) ()?
xem

@xem 요구 사항은 재귀를 요구하지 않으므로 그 이유입니다.
Danny

5

C # : 106 86 58 46 32 28

32 : Getter는 C #에서 머신을 쉽게 사용할 수 있습니다.

public int a{get{return a;}}

1
세터 필요 없음public int a {get{return a;}}
Mike Koder

3
이는 "자신을 호출하는 함수를 정의 할 수 없습니다"규칙을 위반합니다. 분명히 그것은 구문 설탕 뒤에 숨겨져 있지만 여전히 도전의 요점을 놓치고 있습니다.
피터 테일러

setter를 추가하면 규칙을 우회 할 수 있습니다. 이제 서로 호출하는 두 개의 함수가 있기 때문입니다. 그러나 나는 이것이이 도전에 대한 OP의 의도를 여전히 위반 하는가?
Andrew Gray

1
내가 이해하는 아이디어는 언어의 인터프리터 또는 표준 API에서 지나치게 중첩 된 재귀를 찾는 것입니다. C #에서는 쉽지 않을 수 있습니다.
피터 테일러

1
왜 "공개 문자열"입니까? "int"도 다음과 같이 작동합니다.int a { get { return a; } }
NPSF3000

5

INTERCAL, 12 바이트

(1)DO(1)NEXT

설명:

NEXTINTERCAL의 서브 루틴 호출 버전 (또는 최소한 가장 근접한 값)입니다. 현재 위치를 NEXT스택 으로 밀고 지정된 레이블로 이동합니다.

그러나 NEXT스택 길이가 80을 초과하면 INTERCAL 버전의 스택 오버플로가 거의 무엇입니까?

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

Ideone에서 사용해보십시오. .


6
"검은 색 라군에 사라졌습니다"ArnoldC는 무엇입니까?
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 어셈블리 (AT & T), 33 자

레이블 main을 점프 대상으로 사용하고 있지만 재귀 함수 는 아닙니다 .

.globl main
main:push $0;jmp main

좋은 생각 : 이것은 재귀없는 재귀입니다!
Andrea Corbellini

a86 사용 : dd 0fdeb6010 자!
Skizz

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.