fun(int x)
{if(x/2>0)fun(x/2-2);
printf("%d",x);
}
main()
{ fun(20);
printf("\n");
}
答案是-1 2 8 20 为什么不是20 8 2 -1 帮我解释一下 谢谢!!!
參考答案:这是一个递归的算法.
第一次 fun(20) 此时x=20;进入第一次递归后x/2-2=8,在一次递归 不过此时x=8,这一次后x/2-2=2 进入下一论 x=2 ;然后x/2-2=-1,-1<0,递归结束,输出第一个数是-1
后面的同理
注意:递归中是直接再进入函数,而不是先运行printf("%d",x);,到不满足递归条件时,才执行那条语句