LINUX.ORG.RU
решено ФорумTalks

эрланг энд рэкурсьён.


0

1
pong() ->
	receive
		finished ->
			io:format("pong finished~n", []);
		{ping, Pid} ->
			io:format("pong got ping~n", []),
			Pid ! pong,
			pong()
	end.

Как сделано в бим, что через н-ое количество сообщений не присходит stack overflow? Это какое-то большое колдунство или как? На пальцах может кто-нибудь объяснить?

Хвостовая рекурсия. Just Google it.

upwawet
()

На пальцах:

def ping():
    print 'ping'
    return pong

def pong():
    print 'pong'
    return ping

f = ping
for _ in xrange(10000):
    f = f()
baverman ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.