修改代码的一个版本,以解释它在做什么以及为什么要这样做:
def find(j):
if(j>1):
find_result = find(j//10)
new_j = find_result - (j%10)
print("j == %r; find(%r) => %r; find(%r) - %r => %r" % (
j, (j//10), find_result, (j//10), j % 10, new_j))
j = new_j
else:
j=0
return j
i=122
k=find(i)
...其产出如下:
j == 12; find(1) => 0; find(1) - 2 => -2
j == 122; find(12) => -2; find(12) - 2 => -4
所以:首先,你从
j=122
因此,它可以计算
find(12)
减去
2
从结果来看。所以,在我们知道这将做什么之前,我们需要
查找(12)
.
查找(12)
检查是否
j > 1
因为
1
不是
> 1
,这是假的,所以它返回
0
.调用方从中减去2,得到
-2
,它会打印出来。
然后
find(122)
把这个结果
-2
,并减去一个额外的
2.
从中得到,所以
-4
.