一个函数能返回C中的另一个函数吗?

一个函数能返回C中的另一个函数吗?,c,C,我想知道程序的输出是什么。有两个功能,功能1和功能2。第一个函数有一个if语句,当不满足条件时,它返回function2。Function2与之类似,但当不满足条件时,它会返回自身“Function2”。你知道在这种情况下会发生什么吗? 如果一个函数返回另一个函数,是否执行第二个函数? 一个函数返回它自己呢 我为没有说得更具体而道歉。我的意思是: int function1(int n) { if(n==0){ return 1; } return fun

我想知道程序的输出是什么。有两个功能,功能1和功能2。第一个函数有一个if语句,当不满足条件时,它返回function2。Function2与之类似,但当不满足条件时,它会返回自身“Function2”。你知道在这种情况下会发生什么吗? 如果一个函数返回另一个函数,是否执行第二个函数? 一个函数返回它自己呢

我为没有说得更具体而道歉。我的意思是:

int function1(int n) {
    if(n==0){
        return 1;
    }
    return function2(n, 1);
}

int function2(int c, int, s) {
    if(c==1) {
        return s;
    } else {
        return function2(c-1, s*c);
    }
}
我不明白的是,调用function1并返回function2时会发生什么?函数2被调用了吗?如果是,但条件不满足,那么它是否会一直调用自己,直到条件满足并返回“s”

一个函数可以返回另一个函数吗

我认为你真正的意思是:一个函数能返回另一个函数的结果吗

答案是肯定的。使用指针也可以返回函数,但我怀疑您想做什么

Function2与之类似,但当不满足条件时,它会返回自身“Function2”

Function2是一个递归函数。这是一个调用自身来计算结果的函数。例如,
exponentiate
函数可以通过以下方式计算:

function exponentiate(x, n) {
    if (n == 0) {
        return 1;
    } else {
        return x * exponentiate(x, n - 1);
    }
}
(如果不满足条件,则使用不同的参数调用相同的函数)

第一个函数有一个if语句,当不满足条件时,它返回function2


如果需要,Function1只调用Function2。

您指的是递归吗?返回调用自身结果的函数是递归函数,但我没有看到函数返回另一个函数的地址的情况。它是返回函数本身,还是返回调用函数的结果?请发布代码,而不是对其进行描述。@Gaurav我认为值得在这里说得精确一点,并说返回调用结果的函数是递归函数。(除非函数编程或其他东西具有不同的递归含义)是的,任何函数都可以返回函数指针。然而,你所描述的事物的用途是相当有限的。像您描述的那样的程序需要重新设计,以使其不包含不必要的复杂性和混淆。一个函数可能返回另一个函数,但不返回其本身。Downvoter:请解释我的答案中的错误,以便我可以改进它。OP询问函数返回其他函数,不调用其他函数。我相信OP是一个还没有真正理解函数的初学者,这个标题有误导性。我决定忽略标题,把重点放在问题的主体上。换句话说,你的答案是关于递归调用函数的。OP想要返回f1中的函数f2。@悬空指针OP编辑了他的答案,是关于递归的。