我刚开始学习C语言,我已经用这个功能来解释了,但是我真的不明白。

int uknown(int a, int b)
    {
        if  (b == 1) return a;
        else return a + uknown(a, b - 1);
    }

例如,当我将函数与printf命令一起使用时:
#include <stdio.h>

int main()
{
    printf ("Value = %i", uknown(3,4));
    system("pause");
}

我得到的返回值为12。但是我很难理解该计算是如何进行的。

最佳答案

这是recursive方法,用于将两个整数相加。该函数递归调用为

uknown(3,4) calls (since b != 1)
      uknown(3,3) calls (since b != 1)
            uknown(3,2) calls (since b != 1)
                  uknown(3,1) returns 3 to uknown(3,2) (since b == 1)
            uknown(3,2) returns 3 + 3 = 6 to uknown(3,3)
      uknown(3,3)  returns 3 + 6 = 9 to uknown(3,4)
uknown(3,4)  returns 3 + 9 = 12 to printf in main

关于c - 函数内部的函数(引用),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21534984/

10-10 19:29