18//2=9,大于0,满足条件。调用fun(18//2)即fun(9)
9//2=4,大于0,满足条件。调用fun(4)
4//2=2,大于0,满足条件。调用fun(2)
2//2=1,大于0,调用fun(1)
1//2=0,不满足条件
.
这是递归调用,首先明白//是整除符号,%是求余符号。 fun(18),if(18//2>0),则执行,func(9),此时print无法执行,因为等待func(9)执行完毕; 对于func(9),if(9//2>0),则执行fun(4),同样print无法执行,等待func(4)执行完毕; 对于func(4),if(4//2>0),则执行fun(2),同样print无法执行,等待func(2)执行完毕; 对于func(2),if(2//2>0),则执行fun(1),同样print无法执行,等待func(1)执行完毕; 对于func(1),if(1//2>0)为False,执行print,输出1; 此时func(1)执行完毕,开始执行func(2)的print,输出0; 此时func(2)执行完毕,开始执行func(4)的print,输出0; 此时func(4)执行完毕,开始执行func(9)的print,输出1; 此时func(9)执行完毕,开始执行func(18)的print,输出0; 最后输出效果是10010
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632