一个简单的c语言递归代码问题,想了半天始终理解不了

int age(int n){
if (n == 1)
return 10;
else
{
return age(n - 1) + 2;
}
}

int main(void){
int i = 5;
age(3);
printf("age = %d\n" , age(3));
return 0;
}

就是这段代码上的返回值问题,首先第一个 我完全不理解else后面返回递归的问题,return age(n -1)+2 这是先计算n-1+2 然后在调用自身函数么是? 还是说是先算n-1 然后就开始递归了?如果是这样的话 岂不是没机会+2了? 最后是两个返回值 假设else里的n最后等于1 返回值也只有一个10啊 最后怎么会等于14呢,完全不理解啊 ,恳请哪位大牛深入浅出 详细的讲下 感激不尽

看看下面的图示过程

先算n-1,算出age(1)后再+2递推

这是整个递归过程

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答