最初调用fun函数,传递的参数是10,大于0,所以就执行fun(i/2);这又是一次函数调用,再次从该函数的第一句代码执行,又因为5大于0 ,再次执行fun(i/2);还是再递归,以此类推,到最后调用fun(0)时,才会第一次执行函数中的printf语句,打印出0,再返回上一层,即fun(1),打印出1,以此回退,分别打印出2,5,10
调用顺序为:主函数, 1.fun i=10>0 2.fun i=5>0 3.fun i=2>0 4 fun i=1>0 5fun i=0!>0结束递归。执行的时候反过来,从最后面i=0执行print ,i=1执行print ............i=10 print .
递归就是一层一层的算的嘛,例如执行fun(10)的时候里边有一个fun(5),就去执行fun(5)了,一层一层的直到fun(0),0不满足条件直接执行输出语句,然后执行fun(1)的未执行的部分(输出语句)..........
第一步 fun(10),因10>0,继续fun(5),继续fun(2),继续fun(1),继续fun(0),这时i=0就输入i,即先输出个0,然后倒着输出,即1、2、5、10一次输出。
这是一个递归,其实输出结果与i/2有关,所有输出结果为i/2后取整,由于递归所以会倒叙显示。