Как говорят другие, вам нужен базовый вариант, но вам не нужно его проверять.Следующее приводит к очень плохому коду, поэтому не пытайтесь делать это дома.Это просто подтверждение концепции.
Определение массива (индекс от 0 до 21) функций.Каждая функция принимает параметр n
.Функция с индексом 0 возвращает 1 для любого n
, все остальные возвращают n
раз возвращаемое значение функции с индексом n-1
.Начните с вызова функции по индексу n
.Нет if-else, никаких проверок ни для чего.
Достаточно размера массива 21, потому что при 21!
данный тип возвращаемого значения long
(64bit) переполняется, и результат в любом случае не определен.Если вы хотите избежать исключения OutOfBound, вы можете добавить оболочку, которая вызывает функцию с помощью min (n, 21)
.