Programa más corto que arroja StackOverflow Error [cerrado]

75

Escriba un programa que arroje un error StackOverflow o el equivalente en el idioma utilizado. Por ejemplo, en Java , el programa debería lanzar java.lang.StackOverflowError.

No está permitido definir una función que se llame a sí misma o una nueva clase (excepto la que contiene mainen Java). Debe usar las clases del lenguaje de programación seleccionado.

Y no debe arrojar el error explícitamente.

Cierto suave
fuente
44
No entiendo "usar las clases del lenguaje de programación seleccionado"
Prince John Wesley
3
¿Está bien definir una función que llame a una función interna como esta def s{def t=s;t}?
Príncipe John Wesley
12
En la mayoría de los idiomas, las clases son solo un tipo especial de estructura de datos, no el centro del universo. Muchos ni siquiera tienen tal cosa.
dejó de girar en sentido contrario a las agujas del reloj el
1
Lo curioso aquí es que los lenguajes que requieren la eliminación de la recursividad de cola (y las implementaciones que lo admiten cuando los idiomas no lo requieren), que en un sentido muy real son mejores, están en desventaja en esto. La respuesta de TwiNight enlaza con la versión de esto que existe en Stack Overflow desde los primeros días.
dmckee
1
Desde el documento de Java: se produce cuando se produce un desbordamiento de la pila porque una aplicación se repite demasiado profundamente. docs.oracle.com/javase/6/docs/api/java/lang/…
jsedano

Respuestas:

90

Befunge, 1

No sé Befunge, pero ...

1

del código de desbordamiento de pila golf

TwiNight
fuente
21
Explicación: 1 es un literal numérico que se inserta en la pila cuando se encuentra. En Befunge, el flujo de control se envuelve hasta encontrar un @final para el programa.
Histocrat
66
No sabía que había esta pregunta en StackOverflow. Solo busqué en este sitio antes de publicar.
True Soft
31
Me siento un poco halagado de ver mi respuesta aquí.
Patrick
44
Esto también funciona en> <>.
Cruncher el
49

Python (2.7.3), 35 caracteres

import sys
sys.setrecursionlimit(1)

Esta operación en sí tiene éxito, pero tanto el script como el interactivo se lanzarán inmediatamente RuntimeError: 'maximum recursion depth exceeded'como consecuencia.

Inspirado por la respuesta de elssar.

Kevin Reid
fuente
Pensé en poner eso como mi solución, pero no estaba seguro de si el error podría considerarse un desbordamiento de pila. Aunque, esencialmente, eso es lo que es, ¿verdad?
elssar
2
@elssar: Creo que hay dos formas de desbordar la pila: agrandar la parte usada de la pila o reducir la parte no utilizada de la pila. Si imagina que un cubo se llena con agua, puede desbordarlo agregando más agua, pero también puede desbordarlo encogiendo el cubo.
19

Coq

Compute 70000.

70000es solo azúcar sintáctico para S (S ( ... (S O) ...))70000 S's. Creo que es el verificador de tipos lo que causa el desbordamiento de la pila.

Aquí hay una advertencia que se imprime antes de ejecutar el comando:

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).
ReyCharles
fuente
2
Eso podría hacerte pensar que Coq es un lenguaje increíblemente tonto ... divertido ...
dejó de girar en contra del reloj el
1
@leftaroundabout En realidad no. El tipo Nat es un número peano de nivel de tipo que debe actuar como si fuera una lista vinculada.
FUZxxl
1
@FUZxxl: mi comentario no fue irónico en absoluto. Decide por ti mismo si quieres incluir la lógica clásica en esa oración, o prefieres seguir siendo constructivo ...
dejó de girar en contra del reloj el
2
@leftaroundabout Vaya ... lo siento. Olvidé que el analizador de rebajas siempre se come esas lindas etiquetas de "ironía".
FUZxxl
19

Java - 35

class S{static{new S();}{new S();}}
aditsu
fuente
¿OP no dijo que no hay nuevas clases? No veo un public static void mainahí dentro. ¿O simplemente no entiendo Java?
Braden Best
44
@ B1KMusic No hay nuevas clases, solo hay una clase (S). El código usa un inicializador estático, arroja el SO antes de que jvm descubra que no hay un método principal. Funciona con Java 6.
Aditsu
1
Entiendo el bloque estático. ¿Pero cuál es el próximo bloque?
Nicolas Barbulesco
1
@NicolasBarbulesco Ese es un bloque inicializador, se ejecuta cuando construyes una nueva instancia.
aditsu
1
@LuigiCortese Creo que solo funciona con Java 6 o más viejo
aditsu
19

Javascript 24 caracteres

Respuesta dependiente del navegador (debe tener acceso a apply):

eval.apply(0,Array(999999))
  • eval fue el nombre de función global más corto que pude encontrar (¿alguien sabe de uno que sea más corto?)
  • applynos permite convertir una matriz en parámetros de función, siendo el primer parámetro el contexto de la función ( this)
  • Array(999999)creará una matriz con la longitud indicada. No estoy seguro de cuál es el número máximo de argumentos, pero es menor que esto y más de99999

IE9:

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

Chrome 24:

Uncaught RangeError: Maximum call stack size exceeded 

FireFox 18

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

Nota : Debido a la naturaleza de un solo subproceso de javascript, los bucles infinitos terminan bloqueando la interfaz de usuario y nunca lanzan una excepción.

while(1);
for(;;);

Ninguno de estos califica.

Actualización : esto elimina tres caracteres:

eval.apply(0,Array(1e7))
Shmiddty
fuente
MDN dice que evales el más corto.
Peter Taylor el
55
eval.apply(0,Array(1e6))ahorra 3 caracteres, incluso puedes ir 9e9sin costo
ThinkChaos
1
applyes una característica estándar de ECMAScript. No hay nada que dependa del navegador. A menos que esté hablando de navegadores muy antiguos, pero de applytodos modos esto no funcionaría en el hipotético Netscape 2 , porque la Arrayclase no existe en Netscape 2.
Konrad Borowski
1
nuevo más corto en ES6:eval(...Array(9e9))
Patrick Roberts el
1
Probablemente no estándar, arroja Chrome desde la consola. dir.apply(0,Array(1e7));
Paul J
17

Python 2.7 (12 caracteres)

exec('{'*99)

da como resultado un «s_push: desbordamiento de la pila del analizador»

Daniel
fuente
44
TengoSyntaxError: unexpected EOF while parsing
Martin Thoma
1
Con exec('{'*101)I getMemoryError
Martin Thoma
44
En Python2, execes una declaración, por lo que puede usar exec'{'*999(99 no parece ser suficiente)
gnibbler
Necesita al menos 100 para activar un MemoryError. Y ese ≠ desbordamiento de pila
noɥʇʎԀʎzɐɹƆ
13

Mathematica, 4 caracteres

x=2x

$ RecursionLimit :: reclim: se excedió la profundidad de recursión de 1024. >>

alephalpha
fuente
1
"No puede definir una función que se llame a sí misma"
Tomás
13
Esa no es una función, es una variable (a menos que no sea lo que parece).
AMK
Tomaste mi idea.
PyRulez
12

Clojure, 12 caracteres

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

Ejecutando en la réplica:

user=> (#(%%)#(%%))
StackOverflowError   user/eval404/fn--407 (NO_SOURCE_FILE:1)
David Cabana
fuente
Esto me recuerda la expresión del cálculo lambda (\x.xx)(\x.xx), pero no sé lo suficientemente bien como para decir con certeza si esto es lo que está sucediendo. Tampoco veo por qué la expresión mencionada daría como resultado un desbordamiento de la pila, ¿entonces tal vez estás haciendo algún truco con el combinador Y? Esta respuesta me interesa y una explicación sería buena.
Zwei
12

Java - 113 caracteres

Creo que esto se mantiene dentro del espíritu de la regla "sin métodos de auto-llamada". No lo hace explícitamente, e incluso pasa por una construcción de lenguaje Java.

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

Versión condensada:

public class S{public String toString(){return ""+this;}public static void main(String[] a){new S().toString();}}
Joe K
fuente
9
Bueno, ""+thises en realidad ""+this.toString(), así que el método se llama a sí mismo.
True Soft
1
@TrueSoft Bastante seguro de que Java arroja un StringBuilderobjeto allí. toStringprobablemente será llamado desde adentro.
Cruncher
1
Cuando el compilador y el optimizador terminan, el toString()método termina siendopublic java.lang.String toString() { return this.toString(); }
Jonathan Callen
12

C, 19 bytes

main(){int i[~0u];}
Jens
fuente
44
@Thomas Sí, es un desbordamiento de pila en cualquier máquina donde las variables locales se asignan en la pila. Dado que el lenguaje C no tiene el concepto de una indicación de desbordamiento de pila (todo es un comportamiento indefinido; uno de ellos se manifiesta como un defecto), esto cumple con el requisito original.
Jens
OK, lo siento, acepto.
Tomás
3
me da main.c:1:16: error: size of array 'i' is negativeen gcc 4.8.1. La versión sin firmar main(){int i[~0U];}funciona.
Csq
No me funciona después de configurar manualmente una pila de 4GB.
FUZxxl
@FUZxxl Interesante; son tus ints 32 bit? Si es así, sizeof(i)es de 16 GB. ¿El uso de un sufijo ulo ullhace alguna diferencia? Algunos sistemas sobre-confirman la memoria y solo se bloquean si se escribe en la memoria.
Jens
10

GolfScript (8 caracteres)

{]}333*`

Resultado:

$ 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

Básicamente, esto crea una estructura de datos muy anidada y luego desborda la pila al intentar convertirla en una cadena.

Peter Taylor
fuente
Para mí, esto no arroja un error, sino salidas[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[""]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ]]]]]]]]]]]]]]]]] (and so on, output too long for comments)
ProgramFOX
@ProgramFOX, habrá algún valor con el que puede reemplazar 333y se romperá. 333fue el valor más pequeño que se rompió para mí, pero si tiene una versión diferente de Ruby (o tal vez la misma versión en un sistema operativo diferente, por lo que sé), podría manejar una cantidad diferente de marcos de pila antes de desbordarse.
Peter Taylor
1
Se rompe en 3192 en mi máquina, por lo que 6.?aún funciona sin agregar caracteres.
Dennis
10

Ensamblaje x86, sintaxis NASM, 7 bytes

db"Pëý"

"Pëý" es 50 EB FD en hexadecimal, y

_loop:
push eax
jmp _loop

en montaje x86.


fuente
8

Rubí, 12

eval"[]"*9e3

Da

SystemStackError: stack level too deep

Presumiblemente depende del sistema, pero puede agregar órdenes de magnitud subiendo el último dígito (no recomendado).

Editar para explicación: de manera similar a algunos otros ejemplos, esto crea una cadena de [][][]... repetida 9000 veces, luego la evalúa: el extremo derecho []se analiza como una llamada de función al resto, y así sucesivamente. Si realmente llegara al principio, arrojaría un ArgumentError porque []es un objeto con un []método que requiere un argumento, pero mi máquina arroja un error un poco antes de que la pila supere los nueve mil.

histocrat
fuente
hmm ... se estrelló IRB: P
Pomo de la puerta
¿Cual version? ruby1.9.2 arroja "ArgumentError: número incorrecto de argumentos (0 para 1..2)".
manatwork 01 de
Encontrado un viejo ruby1.8.7. Allí el código publicado funciona como se describe.
manatwork 01 de
Extraño, funciona en mi 1.8.7, 1.9.2 y 1.9.3.
histocrat
Hubiera dichodef f;f;end;f
EMBLEMA
8

Rebol (11 caracteres)

do s:[do s]

Rendimientos:

>> 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...

Aunque Rebol tiene funciones, cierres y objetos ... esto no define ninguno de esos. Define una estructura de datos, que en el paradigma de código como datos puede tratarse como código usando DO.

Podemos investigar la cuestión de "qué es S" con el REPL:

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

>> type? s
== block!

>> length? s
== 2

>> type? first s
== word!

>> type? second s
== word!

DO nunca convierte esto en una función, invoca al evaluador en el entorno actual de la estructura.

rgchris
fuente
1
+1 ... No me había dado cuenta de que mi respuesta estaba definiendo una función y eso estaba en contra de las reglas, pero edité mi respuesta para usar DO ... luego noté que ya había enviado esa respuesta. Así que acabo de eliminar el mío, pero dado que escribí por qué esto no define un objeto / función / cierre, pensé en poner la explicación en la tuya. También creo que el do do do do es divertido y vale la pena incluirlo. :-) Espero que esté bien!
Dr. Rebmu
7

C, 35 caracteres

main(){for(;;)*(int*)alloca(1)=0;}
Trabajo
fuente
¿Por qué almacenar algo en el espacio asignado?
Peter Taylor
1
En este caso, es imposible resolver este problema en C.
FUZxxl
3
@dmckee, no todas las fallas de segmentación son desbordamientos de pila, pero diría que sí, ya que es el resultado de exceder la capacidad de la pila.
Ugoren
1
@dmckee, alloca asigna de la pila.
ugoren
1
@PeterTaylor: Probablemente depende de la implementación, pero en mi caso alloca(1)se traduce básicamente para sub $1, %espque no se toque la pila.
Trabajo
7

Lisp común, 7 caracteres

#1='#1#
Erik Haliewicz
fuente
Hermoso ... planeaba usarlo #1=(#1#)para la terminal y (print #1=(#1#)), pero su solución es mucho mejor
protista el
En realidad, eso no se desborda en el momento de la lectura, solo cuando intentas imprimirlo. Entonces, aparte de la diferencia de 1 personaje, el tuyo no es mejor.
Protista
Tienes razón, solo lo edité. No estoy seguro de si hay una manera de causar un desbordamiento en el momento de la lectura.
Erik Haliewicz
En realidad, #. # 1 = '# 1 # causa un desbordamiento del tiempo de lectura :-)
Erik Haliewicz
7

Python - 11 caracteres

exec'('*999

>>> exec'('*999
s_push: parser stack overflow
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
MemoryError
gnibbler
fuente
Solución muy inteligente.
mbomb007
7

Calculadora Casio, 11 pulsaciones de teclas

Es bastante difícil contar bytes / tokens en este "idioma": he dado la cantidad de pulsaciones de teclas requeridas, excluyendo Shift, Alpha (la segunda tecla de mayúsculas) y =al final, esto ciertamente cabe en 1 byte por pulsación de tecla.

Probado en el modelo fx-85GT PLUS , que es una calculadora científica estándar, no gráfica, "no programable". Otros modelos funcionarán.

Solo apila 11 raíces cúbicas:

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

Ni siquiera da un error de sintaxis sobre el número que falta debajo de la raíz cuadrada.

Esto no parece funcionar con raíces cuadradas.

Alternativamente, repita cos(31 veces.

Salida

Stack ERROR

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

Creo que esto califica como un desbordamiento de pila. La pila parece ser pequeña ...


fuente
Siempre pensé que se llamaba error de pila porque "apilabas" demasiadas raíces: P
FlipTack
Mi calculadora Canon da un error de pila con casi cualquier operador (excluyendo al menos +, -, * y /) si se repite 25 veces o más. Por ejemplo, esto causa un error de pila (sin error de sintaxis):(((((((((((((((((((((((((
Steadybox
7

FORTH, 13 bytes

BEGIN 1 AGAIN

desborda la pila de valores

monstruo de trinquete
fuente
: X X ; X(9) debe desbordar la pila de devolución
AMK
no funcionará (X no se define mientras se define la llamada y eso es una auto referencia / recursión
ratchet freak
@ratchetfreak, esas palabras de control solo se pueden usar en un estado de compilación, por lo que deben incluirse en una :... ;definición de palabras. Eso agrega al menos 6 caracteres, más al menos 2 más para que esto se ejecute como un programa. Usted puede ser capaz de hacerlo más corto, pero aquí está un ejemplo: : F BEGIN 1 AGAIN ; F. Sugiero esto porque la pregunta es: "Escribe un programa". De todos modos, ¡te di un voto a favor para Forth, independientemente del recuento de char! :-)
Darren Stone
6

Postdata, 7

{1}loop

P.ej.

$ 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>
luser droog
fuente
6

Haskell (GHC, sin optimización), 25

main=print$sum[1..999999]

sum es vago en el total. Esto acumula un montón de thunks, luego intenta evaluarlos todos al final, lo que resulta en un desbordamiento de la pila.

Joey Adams
fuente
Siempre pensé que la suma se implementó usando foldl '. no es asi
orgulloso haskeller
6

LaTeX: 8 caracteres

\end\end

Este es el mismo código utilizado en esta respuesta . Esencialmente, la \endmacro se expande repetidamente, lo que resulta en un desbordamiento de pila: TeX capacity exceeded, sorry [input stack size=5000]. Una explicación más detallada se puede encontrar aquí .

bwDraco
fuente
5

PHP 5.4, 33 caracteres

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

Esto provoca un desbordamiento de la pila cuando los objetos stdClass anidados se destruyen automáticamente:

$ 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 ()
Por favor levantese
fuente
2
¡+1 para lo que debe ser la segunda aparición de PHP en CodeGolf!
Bojangles
5

Q / k (16 caracteres)

No estoy seguro si esto está en el espíritu del desafío, pero no creo que rompa las reglas:

s:{f`};f:{s`};f`
skeevey
fuente
Es una pena que C # requiera tanto tipeo, ¡inspiraste mi respuesta!
Andrew Gray
5

Un grupo del mismo estilo:

Python, 30

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

Javascript, 38

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

Lua, 44

(function(x) x(x) end)(function(y) y(y) end)
Eric
fuente
En Python x=lambda y:y(y);x(x)es más corto (20 caracteres). Esta función no es recursiva. x llama a cualquier función que se le pase como argumento.
AMK
Ruby 2.0 -->x{x[x]}[->y{y[y]}]
John Dvorak
Mathematica#@#&[#@#&]
alephalpha
Solo está utilizando la recursividad, entonces ¿por qué no hacer eso, por ejemplo, en JS: (función x () {x ()}) ()?
xem
Los requisitos de @xem dicen que no hay recursión, por eso.
Danny
5

C #: 106 86 58 46 32 28

32 : Getters puede SO su máquina fácil en C #:

public int a{get{return a;}}
Andrew Gray
fuente
1
No necesita setterpublic int a {get{return a;}}
Mike Koder
3
Esto viola la regla "No está permitido definir una función que se llame a sí misma". Es cierto que está oculto detrás de la sintaxis de azúcar, pero todavía le falta el punto del desafío.
Peter Taylor
Agregar el setter elude la regla, porque ahora tiene dos funciones que se llaman entre sí. Pero me pregunto: ¿eso todavía viola las intenciones del OP detrás de este desafío?
Andrew Gray
1
La idea, según tengo entendido, es encontrar una recursión excesivamente anidada en el intérprete o API estándar del lenguaje. Esto podría no ser demasiado fácil en C #.
Peter Taylor
1
¿Por qué "cadena pública"? "int" funciona igual de bien:int a { get { return a; } }
NPSF3000
5

INTERCAL, 12 bytes

(1)DO(1)NEXT

Explicación:

NEXTes la versión de INTERCAL de una llamada de subrutina (o, al menos, la más cercana que puede obtener). Empuja la posición actual en la NEXTpila y salta a la etiqueta dada.

Sin embargo, si la NEXTlongitud de la pila excede 80, obtienes lo que es más o menos la versión INTERCAL de un desbordamiento de pila:

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

Pruébalo en Ideone. .

kirbyfan64sos
fuente
66
"HA DESAPARECIDO EN LA LAGUNA NEGRA" ¿Qué es esto, ArnoldC?
Addison Crump
5

Mornington Crescent, 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
pppery
fuente
4

Conjunto X86 (AT&T), 33 caracteres

Tenga en cuenta que aunque estoy usando la etiqueta maincomo un objetivo de salto, esta no es una función recursiva.

.globl main
main:push $0;jmp main
Trabajo
fuente
Buena idea: esta es una especie de recursión sin recursión.
Andrea Corbellini
usando a86: dd 0fdeb6010 caracteres!
Skizz
4

Python (17):

c='exec c';exec c
ɐɔıʇǝɥʇuʎs
fuente
hm, me saleKeyError: 'unknown symbol table entry'
stefreak