void fun(int n)
{
if(n > 0) {
fun(--n);
printf("%d", n);
fun(--n);
}
}
以下代码如何评估?它将输出设为0 1 2 0
答案 0 :(得分:1)
fun(3) //n=3
func(2) // n = 3, (--n) = 2
func(1) // n = 2, (--n) = 1
func(0) // n = 1, (--n) = 0
printf("%d", 0) // n=0 **Got 0 **
func(-1) // n = 0, (--n) = -1
printf("%d",1) // n = 1 **Got 0 1**
func(0) // n = 1, (--n) = 0
printf("%d", 2) // n =2 "Got 0 1 2"
func(1) // n = 2, (--n) = 1
func(0) // n = 1, (--n) = 0
printf("%d", 0) // n=0 ***Got 0 1 2 0*
func(-1) // n = 0, (--n) = -1