Предположим, у нас есть рекурсивная функция, которая завершается только в том случае, если случайно сгенерированный параметр удовлетворяет некоторому условию:
e.g:
{
define (some-recursive-function)
x = (random in range of 1 to 100000);
if (x == 10)
{
return "this function has terminated";
}
else
{
(some-recursive-function)
}
}
Я понимаю, что для бесконечных циклов не будет определена сложность. Как насчет некоторых функций, которые определенно завершаются, но через неизвестное количество времени?
Было бы хорошо найти среднюю временную сложность для этого. Как можно найти временную сложность в худшем случае, если она существует?
Заранее спасибо!
РЕДАКТИРОВАТЬ: Как уже отмечалось, я полностью упустил тот факт, что для этой функции нет ввода. Вместо этого предположим, что у нас есть:
{define (some-recursive-function n)
x = (random in range of 1 to n);
if (x == 10)
{
return "this function has terminated";
}
else
{
(some-recursive-function)
}
}
Изменит ли это что-нибудь?
n
в своем рекурсивном вызове илиx
? - person Jim Mischel   schedule 27.10.2017