有的递归有return语句,那出栈和return有关么?还有出栈后的数据一般给谁了
追答#include
int fun(int num){
if(num==0) return;
return num+fun(num-1);
}
int main(){
int a = 3;
int sum;
sum = fun(a);
printf("%d\n",sum);
return 0;
}
看上面这个例子
return num+fun(num-1);
开始一直调用,一直到num==0,然后开始出栈
其实就等于 return num+fun(num-1) => num+num-1+fun(num-2) => num+num-1+num-2+fun(num-3) 然后num-3 == 0 开始出栈num+num-1+num-2+0 => num+num-1+1 => num+3
=>7. return 7;
所以说出栈个return有关,出栈数据因情况而定,这里是返回主函数了