请教C语言老师,详细解释一下递归调用:

Python011

请教C语言老师,详细解释一下递归调用:,第1张

分析一下fac()是如何执行的。假设读入的n=3。

首先, main()函数中的y=fac(3),引起第1次函数调用。进入函数后实参n=3,应执行计算3*fac(2)

为了计算fac(2),引起对fac()函数的第2次调用(递归调用),重新进入函数fac(),实参n=2,应执行计算2*fac(1)。

为了计算fac(1),引起对函数fac()的第3次调用(递归调用),重新进入函数,实参n=1,应执行计算1*fac(0)。

为了计算叫fac(0),引起对函数fac()的第4次调用(递归调用),重新进入函数,实参n=0,此时执行f=1和return(f),完成第4次调用,回送结果fac(0)=1,返回到第3次调用层。

计算执行f=1*fac(0)和return(f),完成第3次调用,回送结果fac(1)=1 返回到第2次调用层。

计算执行f=2*fac(1)和return(f)。完成第2次调用,回送结果fac(2)=2,返回到第1次调用层。

计算执行f=3*fac(2)和return(f).完成第1次调用,回送结果fac(3)=6,返回到土函数。

if (profilerInfo != null) {

data.writeInt(1)

profilerInfo.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE)

} else {

data.writeInt(0)

}

if (options != null) {

data.writeInt(1)

options.writeToParcel(data, 0)

} else {

data.writeInt(0)

}