Python逆向分析:递归函数find(122)输出-2、-4的原因是什么?
Python 递归代码输出逻辑解答
我们按照递归「先执行内层调用、再逐层返回执行剩余逻辑」的规则,拆解完整执行流程:
- 初始触发
find(122),j=122>1,需要先执行find(122//10)即find(12),当前层后续的减法、打印逻辑暂时暂停 - 进入
find(12),j=12>1,需要先执行find(12//10)即find(1),当前层后续逻辑暂停 - 进入
find(1),j=1不满足>1的判断条件,走else分支将j赋值为0,直接返回0,这一层没有打印操作 - 返回
find(12)的暂停位置,计算find(1)返回值 - 12%10,即0 - 2 = -2,赋值给j后执行打印,输出第一个结果-2,最终find(12)返回-2 - 返回最外层
find(122)的暂停位置,计算find(12)返回值 - 122%10,即-2 - 2 = -4,赋值给j后执行打印,输出第二个结果-4,最终find(122)返回-4赋值给k
内容的提问来源于stack exchange,提问作者Curios about Python
相关产品推荐
相关产品推荐

