一个函数可以在C中返回另一个函数吗?

时间:2018-09-03 06:28:30

标签: c

我试图弄清楚程序的输出是什么。有两个函数,function1和function2。第一个函数具有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并返回funciton2时会发生什么?是否调用function2?如果满足,并且不满足条件,那么它会继续调用自身直到满足条件并返回“ s”吗?

1 个答案:

答案 0 :(得分:4)

  

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

我认为您真正的意思是:一个函数可以返回另一个函数的结果吗?

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

  

Function2与之类似,但是当不满足条件时,它将返回“ function2”。

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

function exponentiate(x, n) {
    if (n == 0) {
        return 1;
    } else {
        return x * exponentiate(x, n - 1);
    }
}

(如果不满足条件,请使用不同的参数调用同一函数)

  

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

Function1仅在需要时调用Function2。