Recursion 递归函数是高阶函数的特例吗
维基百科说: 在数学和计算机科学中,高阶函数 函数形式(functional form,functional或functor)是在 至少满足以下条件之一:Recursion 递归函数是高阶函数的特例吗,recursion,computer-science,higher-order-functions,Recursion,Computer Science,Higher Order Functions,维基百科说: 在数学和计算机科学中,高阶函数 函数形式(functional form,functional或functor)是在 至少满足以下条件之一: 将一个或多个函数作为输入 输出一个函数 而且 递归函数是在其运行期间调用自身的函数 执行 这是否意味着递归函数可以归类为高阶函数的一个非常特殊的情况 请参考本案例: int foo(int i) { if(i>10) { return 10; } cout<<i; r
- 将一个或多个函数作为输入
- 输出一个函数
int foo(int i)
{
if(i>10)
{
return 10;
}
cout<<i;
return foo(++i);
}
intfoo(inti)
{
如果(i>10)
{
返回10;
}
coutNo在此上下文中,“输出”函数意味着返回函数,而不是返回调用函数的结果。也就是说,返回值本身是可调用的。递归函数通常不一定会这样做。例如:
def factorial(n: int) -> int:
if n == 0:
return 1
else:
return n*factorial(n-1)
此代码返回整数。不能调用整数,因此它不是高阶函数。否
输出函数意味着函数可以用作函数的返回值,如下所示(Lua中的代码):
函数foo()
返回函数(a,b)返回a+b结束
结束
在您的递归函数示例中,返回值是expresionfoo(++i)
的结果,而不是函数foo
本身。假设您的Algol方言不支持递归,但支持高阶函数。我们仍然可以实现您的示例吗?当然可以
intfoo_aux(inti,Func cont)
{
如果(i>10){
返回10;
}否则{
我们还可以从哪些分类中选择?您在编辑中引用的函数不是“高阶函数”。它将递归调用产生的值返回到自身,而不是返回函数。共享和享受。您能将lua代码转换为c/c++/java/js吗。我无法理解一个语句中的一两个返回用法。我使用lua是因为它支持高阶函数,即使您不知道它也很容易理解。key表示函数(a,b)返回a+b end
表示函数定义的语法。