При работе с рекурсивными функциями способ эффективного выражения того, что делает функция, состоит в том, чтобы рассматривать ее как математическую функцию и упростить применение функции.Хотя это на самом деле не скажет вам о внутреннем состоянии функции (в данном случае, значение temp
), это дает вам действительно хороший способ описать функцию.
Для факторного примера мы можемопределить факт как:
fact(x) = 1 when x <= 1
fact(x) = x * fact(x - 1) otherwise
Теперь, когда вы хотите выразить, как это работает, вы выбираете небольшое начальное число (скажем, 6) и ...
fact(6) = 6 * fact(5) = 6 * 5 * fact(4) = 6 * 5 * 4 * fact(3)
и т. д.on.
Таким образом, вы анализируете структуру функции, а не ее реализацию.Теперь для целей отладки это не слишком полезно (по крайней мере, на нефункциональном языке).Но это замечательно для комментариев, документации и общения.