我正在学习函数式编程语言课程,但在“作为参数的函数”的上下文中我很难理解递归
fun n_times(f , n , x) =
if n=0
then x
else f (n_times(f , n - 1 , x))
fun double x = x+x;
val x1 = n_times(double , 4 , 7);
the value of x1 = 112
这将 'x' 'n' 倍加倍,因此 7 倍增 4 倍 = 112
我可以理解更简单的递归模式,例如在列表中添加数字或函数的“幂”,但我不明白这个函数“n_times”是如何通过调用自身来评估的?能解释一下这个函数是如何工作的吗?
我在学习这门课程时标记了 scala,以提高我对 scala(以及函数式编程)的理解,我认为这是一种常见的模式,所以可以提供建议吗?