Как я могу получить адрес памяти переменной JavaScript?

Вот пример рекурсивного алгоритма для обращения к односвязному списку. На ноутбуке со следующей спецификацией (память 4G, процессор Intel Core i5 2.3GHz, 64-разрядная версия Windows 7) эта функция будет запущена с ошибкой StackOverflow для связанного списка размером около 10 000.

Могу сказать, что мы должны использовать рекурсию разумно, всегда принимая во внимание масштаб системы. Часто рекурсия может быть преобразована в итеративную программу, которая масштабируется лучше. (Одна итеративная версия того же алгоритма приведена в нижней части страницы, она меняет один и тот же список размером 1 миллион за 9 миллисекунд.)

    private static LinkedListNode doReverseRecursively(LinkedListNode x, LinkedListNode first){

    LinkedListNode second = first.next;

    first.next = x;

    if(second != null){
        return doReverseRecursively(first, second);
    }else{
        return first;
    }
}

public static LinkedListNode reverseRecursively(LinkedListNode head){
    return doReverseRecursively(null, head);
}

Итеративная версия того же алгоритма:

    public static LinkedListNode reverseIteratively(LinkedListNode head){
    return doReverseIteratively(null, head);
}   

private static LinkedListNode doReverseIteratively(LinkedListNode x, LinkedListNode first) {

    while (first != null) {
        LinkedListNode second = first.next;
        first.next = x;
        x = first;

        if (second == null) {
            break;
        } else {
            first = second;
        }
    }
    return first;
}


public static LinkedListNode reverseIteratively(LinkedListNode head){
    return doReverseIteratively(null, head);
}
53
задан vivekian2 12 March 2009 в 17:11
поделиться

1 ответ

Если бы это было бы возможно вообще, это очень зависело бы от механизма JavaScript. Более современный механизм JavaScript компилирует их код с помощью как раз вовремя, компилятор и питание с их внутренними переменными были бы или плохо для производительности, или плохо для устойчивости.

, Если механизм позволяет его, почему бы не заставить вызов функции взаимодействовать через интерфейс к некоторому собственному коду для обмена значениями переменной?

17
ответ дан Emiel 7 November 2019 в 18:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: