C 递归函数返回值

C 递归函数返回值,c,recursion,return-type,C,Recursion,Return Type,我似乎不理解这个特定代码背后的逻辑。我不明白为什么答案是18。您也可以在编译器中检查答案。任何理解逻辑的人请告诉我 代码如下: #include <stdio.h> int GuessMe(int,int); main() { printf("%d", GuessMe(8,2)); } int GuessMe(int x, int y) { if ( y > x) return x else return GuessM

我似乎不理解这个特定代码背后的逻辑。我不明白为什么答案是18。您也可以在编译器中检查答案。任何理解逻辑的人请告诉我

代码如下:

#include <stdio.h>
int GuessMe(int,int);
main() {
    printf("%d", GuessMe(8,2));
}

int GuessMe(int x, int y) {
    if ( y >  x)
        return x
    else
        return GuessMe(x-2, y+2) + x;
}
#包括
int猜我(int,int);
main(){
printf(“%d”,猜我(8,2));
}
int猜我(int x,int y){
如果(y>x)
返回x
其他的
返回猜测me(x-2,y+2)+x;
}

最初,
GuessMe
被传递
x=8,y=2

x | y | y > x ? | initial return value |  final return value
8 | 2 |    NO   |  GuessMe(6, 4) + 8   |     18
6 | 4 |    NO   |  GuessMe(4, 6) + 6   |     10
4 | 6 |   YES   |         4            |      4

向下读取
初始返回值
列,然后在点击非递归的
初始返回值
后,重新读取最终的
返回值列。

显示代码,而不是链接请不要将代码作为图像发布。为此,既不要显示图像,也不要显示代码。使用调试器、设置断点、检查变量并做笔记。18是正确的。这不是一个真正的问题,所以,请解释一下你的尝试。询问有关任何混淆点的具体问题,而不仅仅是一般的“解释此代码”。这是一个非常简单的递归函数,其中添加了
8+6+4
,其中
4
返回x
,因为
y
6
并且大于
4
。我不太明白你为什么不明白。您是否不确定
(8+6+4)==18
,或者您不了解函数调用是如何工作的?