Короткое замыкание является ключевой концепцией в этом случае:
return not solve(n-1) or not solve(n-2) or not solve(n-3)
Если результат первой функции ложен, то есть первый операнд логического ИЛИ равен true, тогда другойфункции не нужно оценивать (мы уже знаем общий результат).
Если результат первой функции истинен, то нам нужно оценить вторую функцию.Следуя тому же образу мышления, что и выше, если этот второй операнд оценивается как true, то мы закончили, и нам не нужно вызывать третью функцию.
Если результаты обеих первых двух функций верны,затем нам нужно оценить и третью функцию, чтобы оценить выражение в целом.
И так как мы говорим о сложности времени, вам нужно думать с точки зрения наихудшего и наилучшего сценариев.
- Лучший вариант: один вызов функции.Сложность времени:
T(n - 1)
. - В худшем случае: три вызова функций.Сложность времени:
T(n - 1) + T(n - 2) + T(n - 3)
.