Ulam-Funktion (rekursiv) auf Calliope mini

Der Calliope Mini ist schon ein beeindruckendes Ding. Um etwas mehr darüber zu lernen, habe ich die Ulam-Funktion auf dem Gerät programmiert.

Eine einfache Bedienungsanleitung? Klar: Mit „A“ die Zahl erhöhen, mit „B“ die Zahl senken. Der kleine schwarze Druckknopf links unten „A+B“ startet die Berechnung.

Und der Code dazu, in JavaScript:

let n: number
let ulam = function (n: number): number {
    basic.showString("," + n)
    if (n == 1) {
        return 1
    } else {
        if (n % 2 == 0) {
            return ulam(n / 2)
        }
        else { return ulam(3 * n + 1) }
    }
}
input.onButtonPressed(Button.B, () => {
    n += -1
    basic.showString("-" + n)
})
input.onButtonPressed(Button.A, () => {
    n += 1
    basic.showString("+" + n)
})
input.onButtonPressed(Button.AB, () => {
    ulam(n)
    basic.showString("#" + n)
})