Где я начинаю заставлять Linux ввести взлом?

В традиционная рекурсия , типичная модель - то, что Вы выполняете свои рекурсивные вызовы сначала, и затем Вы берете возвращаемое значение рекурсивного вызова и вычисляете результат. Этим способом Вы не получаете результат своего вычисления, пока Вы не возвратились из каждого рекурсивного вызова.

В хвостовая рекурсия , Вы выполняете свои вычисления сначала, и затем Вы выполняете рекурсивный вызов, передавая результаты Вашего текущего шага к следующему рекурсивному шагу. Это приводит к последнему оператору, являющемуся в форме (return (recursive-function params)). В основном, возвращаемое значение любого данного рекурсивного шага совпадает с возвращаемым значением следующего рекурсивного вызова .

последствие этого - то, что, как только Вы готовы выполнить свой следующий рекурсивный шаг, Вам больше не нужен текущий стековый фрейм. Это допускает некоторую оптимизацию. На самом деле, с соответственно записанным компилятором, у Вас никогда не должно быть переполнения стека хихиканье с рекурсивным вызовом хвоста. Просто снова используйте текущий стековый фрейм для следующего рекурсивного шага. Я вполне уверен, Lisp делает это.

10
задан gfxmonk 10 September 2013 в 20:02
поделиться

1 ответ

Я не уверен, но evdev может делать такие вещи . Например, он может имитировать нажатие на клавиатуру при нажатии кнопки мыши (прокрутка вверх / вниз также является кнопкой). Возможно, можно будет выполнять горизонтальную прокрутку (возможно, с помощью стрелок влево / вправо на клавиатуре?).

1
ответ дан 4 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

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