#include <iostream>
using namespace std;
int screw(int x){
if(x==1)
return x;
else
screw(x-1);
}
int main(){
cout<<screw(5)<< endl;
return 0;
}
此代码的输出:1 任何人都可以解释当代码的“else”部分没有返回语句时,螺钉(5),螺钉(4),螺钉(3),螺钉(2)是如何返回1的。 使用调用堆栈来解释将非常感激。任何有关它的基础知识的见解都非常受欢迎。
答案 0 :(得分:1)
在x86架构上的C / C ++调用约定中,funtion返回eax寄存器中的值。 C中的'return val'语句用val更新eax。如果没有明确的'return val',则恰好在eax寄存器中的值成为函数返回值。在你的例子中,最里面的调用在返回时将1放在eax中,这被传递给所有递归调用。