#include<stdio.h>
int sum=0;
int f(int a,int b,int c){
if(a>0)
f(a-1,b,c*2);
if(b>0)
f(a,b-1,c-1);
if(a==0&&b==0&&c==1)
sum=sum+1;
return sum;
}
int main(){
f(5,9,2);
printf("%d",sum);
}
这道题开始被问到第一反应就是0,然而实际run后答案却是14,究竟为啥呢,经过断点查看流程后发现是方法的进栈以及出栈的缘故,不return的话方法将一直调用方法,从而跑了8000多次f方法后才返回了数,从这也可以看出人想的跟电脑做的不一定一样,按照一般的想法,最后也没执行过sum=sum+1,然后电脑的做法是进栈出栈,从而导致没被return的方法一直在栈内且并没有我们所想的继续执行下去。