Как обрабатывается со-рекурсия?

Хорошо, в принципе, у меня проблема с пониманием того, применяется ли вариант 1 или 2 в следующем случае:

naturals = 0 : map (+ 1) naturals

Где есть варианты:
1. Исполнение ужасное, все пересчитывается на каждом шаге:

naturals     = [0]
naturals'    = 0:map (+ 1) [0]          // == [0, 1]
naturals''   = 0:map (+ 1) [0, 1]       // == [0, 1, 2]
naturals'''  = 0:map (+ 1) [0, 1, 2]    // == [0, 1, 2, 3]
naturals'''' = 0:map (+ 1) [0, 1, 2, 3] // == [0, 1, 2, 3, 4]

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

naturals     = 0:something
                                  |
naturals'    = 0:      map (+ 1) (0:      something)
                                    |
naturals''   = 0:1:    map (+ 1) (0:1:    something')
                                      |
naturals'''  = 0:1:2:  map (+ 1) (0:1:2:  something'')
                                        |
naturals'''' = 0:1:2:3:map (+ 1) (0:1:2:3:something''')

с |, указывающим, где mapнаходится в его выполнении.

Я знаю, что ответы могут быть только 1 или 2 , но я был бы признателен за некоторые указатели на хорошие объяснения со -рекурсии, чтобы развеять последние сомнения :)

-. ] 121 ---933633-

NSTimer Уменьшить время на секунды/миллисекундыЯ разрабатываю приложение QuiZ. Ему нужен таймер обратного отсчета. Я хочу запустить таймер на 75 :00,00 (мм :сс.СС )и уменьшить его до 00 :00,00 (мм :сс.SS ), уменьшив 1 миллисекунду. Я хочу отобразить...

Я разрабатываю приложение QuiZ. Ему нужен таймер обратного отсчета. Я хочу запустить таймер на 75 :00,00 (мм :сс.СС )и уменьшить его до 00 :00,00 (мм :сс.SS ), уменьшив 1 миллисекунду. Я хочу отображать предупреждение о том, что Time UP! когда время достигает 00 :00,00 (мм :сс.СС ).

Время отображается по ссылке ниже.

Секундомер, использующий NSTimer, неправильно отображает время паузы

6
задан Community 23 May 2017 в 12:26
поделиться