blu*_*sky 2 recursion functional-programming scala ml sml
我正在学习函数式编程语言课程,并且我很难理解"函数作为参数"的上下文中的递归
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
Run Code Online (Sandbox Code Playgroud)
这个'x''n倍倍,所以7倍加倍4次= 112
我可以理解更简单的递归模式,例如在列表中添加数字,或"功能"但我无法理解这个函数'n_times'如何通过调用自身来评估?可以解释这个功能如何工作?
我用scala标记,因为我正在学习这门课程以提高我对scala的理解(以及函数式编程),我认为这是一种常见的模式,所以可以提供建议吗?
小智 6
如果n
为0,x
则返回.
否则,f (n_times(f , n - 1 , x))
返回.
怎么n_times
办?这需要调用的结果f
用x
,n
时间,或者等价地:要求f
与结果n_times(f, n - 1, x)
(调用f
n-1
上的时间x
).
请注意f
我的意思是:
打f
3次电话:f(f(f(x)))
打f
2次:f(f(x))