函数内部的函数(参考)

use*_*020 2 c reference function

我刚刚开始学习C语言,我有这个功能来解释,但我真的不明白.

int uknown(int a, int b)
    {
        if  (b == 1) return a;
        else return a + uknown(a, b - 1);
    }
Run Code Online (Sandbox Code Playgroud)

当我使用printf命令的函数时,例如:

#include <stdio.h>

int main()
{
    printf ("Value = %i", uknown(3,4));
    system("pause");
}
Run Code Online (Sandbox Code Playgroud)

我的返回值为12.但是我很难理解计算是如何进行的.

hac*_*cks 5

这是一种通过加法乘以两个整数的递归方法.该函数以递归方式调用

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 
Run Code Online (Sandbox Code Playgroud)