递归函数中,位于递归调用前的语句和各级被调用函数具有相同的执行顺序 这句怎么理解?
#include <stdio.h>
int getPeachNumber(n)
{
int num; //定义所剩桃子数
if(n==10)
{
return 1;//递归结束条件
}
else
{
num = (getPeachNumber(n+1)+1)*2; //这里是不应该用递归呢?
printf("第%d天所剩桃子%d个\n", n, num); //天数,所剩桃子个数
}
return num;
}
当第一个变量n进入getPeachNumber递归函数时,首先变量n会先进入if 函数,不符合后进入else执行代码块。递归调用语句 num = (getPeachNumber(n+1)+1)*2; 中“getPeachNumber(n+1)”相当于再次进入函数getPeachNumber,这里n+1 相当于次级变量,它像变量n一样首先要进入if函数进行判断,然后执行其余代码块。这就是“位于递归调用前的语句和各级被调用函数具有相同的执行顺序”的意思。
num = getPeachNumber(n+1)*2+2;