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.但是我很难理解计算是如何进行的.
这是一种通过加法乘以两个整数的递归方法.该函数以递归方式调用
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)