C 递归函数返回值
我似乎不理解这个特定代码背后的逻辑。我不明白为什么答案是18。您也可以在编译器中检查答案。任何理解逻辑的人请告诉我 代码如下: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
#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
,或者您不了解函数调用是如何工作的?