| |||
![]()
|
![]() ![]() |
![]()
теорвер + рекурсия в цикле На днях гонял код вроде следующего void f() { for(;;) if(rand()<p) f(); else break; } Тривиальная, в общем, штучка, но ведет себя забавно. При вероятности p>1/2 с ненулевой вероятностью последовательность вызовов становится актуально-бесконечной, и это при том, что матожидание длины каждого цикла конечно, и конечно матожидание глубины каждой линейной цепочки рекурсии. Интуиция cтупила. Первоначально я был уверен, что цепочка вызовов будет всегда конечной, но уже при p=1/2 матожидание количества вызовов становится бесконечным, ну а далее бесконечной становится, с определенной вероятностью, и реализация. Кстати, посчитал матожидание общего количества вызовов при заданном p<1/2. Как строго-формально считать такую разветвляющуюся хрень, вообще себе не представляю, но нестрого решается довольно просто. |
||||||||||||||
![]() |
![]() |