gpt4 book ai didi

scala - 无法理解 'functions as arguments' 递归

转载 作者:行者123 更新时间:2023-12-03 05:05:48 25 4
gpt4 key购买 nike

我正在学习函数式编程语言类(class),但我很难理解“函数作为参数”上下文中的递归

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 进行了标记,因为我正在学习本类(class),以提高我对 scala(以及函数式编程)的理解,并且我认为这是一种常见模式,因此也许能够提供建议?

最佳答案

如果n为0,则返回x

否则,返回f (n_times(f , n - 1 , x))

n_times 是做什么的?它获取使用 xn 次调用 f 的结果,或者等效地:使用以下结果调用 f n_times(f, n - 1, x)(在 x 上调用 f n-1 次)。

请注意,通过调用 f 我的意思是,例如:

调用f 3次:f(f(f(x)))

调用f 2次:f(f(x))

关于scala - 无法理解 'functions as arguments' 递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14636502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com