Recursión en WebAssembly
Una función se llama a sí misma por su propio $nombre.
(module
;; A function may call itself; the stack is the call stack.
(func $fact (export "factorial") (param $n i32) (result i32)
(if (result i32)
(i32.le_s (local.get $n) (i32.const 1))
(then (i32.const 1))
(else
(i32.mul
(local.get $n)
(call $fact
(i32.sub (local.get $n) (i32.const 1))))))))
Cómo funciona
(func $fact (export "factorial") ...)ata ambos nombres a la vez.- El caso base devuelve 1 a través del if tipado.
- El else multiplica por
call $factde n menos uno.
Palabras clave y builtins usados aquí
callelseexportfunci32ifmoduleparamresultthen
El intento, en números
- Líneas
- 11
- Caracteres a escribir
- 293
- Tokens
- 73
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 67 segundos.
Paso 2 de 3 en Llamadas; paso 14 de 28 en Fundamentos del lenguaje.