Это простая рекурсивная реализация вычисления числового числа Фибоначчи (1 1 2 3 5 8 ....). И это имеет небольшую ошибку. Это должно быть:
function f(num) {
if (num<=1) { // should be <= 1 instead of <, to handle when num = 1, otherwise it'll end up with f(0)+f(-1)
return 1;
}
return f(num-1) + f(num-2);
}
Вы можете попытаться записать от руки и смоделировать некоторые простые случаи, которые я считаю действительно полезными при изучении алгоритмов.
Например:
f(0) -> 0 is less than 1, return 1, thus f(0) = 1
f(1) -> 1 is less than or equal to 1, return 1, thus f(1) = 1
f(2) -> 2 is greater than 1, return f(1) + f(0), which we know from above, is 1 + 1, thus f(2) = 2
f(3) -> 3 is greater than 1, return f(2) + f(1), 2 + 1, thus f(3) = 3
f(4) -> 4 is greater than 1, return f(3) + f(2), 3 + 2, thus f(4) = 5
Могу поспорить, вы видите шаблоны сейчас. Надеюсь, поможет.