我采取了函数式编程语言当然,我有困难“作为参数的函数”不能理解
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为我修这门课程来提高我的斯卡拉的理解(连同函数式编程),我认为这是一个常见的模式,可能可以提供意见?
我想这似乎太明显了。尝试使用重写方法(也许使用'n'为3而不是4)来重写顶层调用和每次递归调用,并将实际参数值替换为对函数体中形式参数的引用。 –