Привет! Давай разберёмся с этой задачей шаг за шагом.
Перед нами рекурсивная функция W(n), которая принимает на вход число n. Нам нужно понять, какой будет результат работы программы, если на вход подать число 20.
Функция W(n) работает следующим образом:
- Если
nменьше или равно 2, функция возвращает количество путейn+2. - Если
nравно 20 и при этом делится на 2 и на 3, то возвращаетW(n-1)+2*W(n/2). - В остальных случаях возвращает
W(n-1)+W(n-3).
Итак, вводим число 20. Оно не меньше или равно 2, поэтому первое условие не подходит. Число 20 делится на 2, но не делится на 3, значит второе условие тоже не подходит. Значит надо использовать третье условие: W(n-1)+W(n-3).
Теперь посчитаем:
W(20) = W(19) + W(17)
Чтобы узнать W(19), снова рассмотрим все условия. 19 меньше 20, не делится ни на 2, ни на 3, значит:
W(19) = W(18) + W(16)
Теперь посчитаем W(18):
W(18) делится на 2, но не делится на 3, так что:
W(18) = W(17) + W(15)
Таким же образом продолжаем вычислять рекурсивно значения функции до тех пор, пока аргумент функции не станет меньше или равен 2. В результате на каждом шаге мы