typestar

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

  1. (func $fact (export "factorial") ...) ata ambos nombres a la vez.
  2. El caso base devuelve 1 a través del if tipado.
  3. El else multiplica por call $fact de n menos uno.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 3 en Llamadas; paso 14 de 28 en Fundamentos del lenguaje.

← Anterior Siguiente →