问题的关键在于理解代码中的循环和条件语句的执行顺序。在给出解决方法之前,让我们来分析一下代码的执行过程:
def test(x):
if x == 1:
return 1
else:
return test(x-1)
print(test(3))
test(3),由于3不等于1,执行else语句。test(x-1),即test(2)。test(1)。test(2)的地方,得到返回值1。test(3)的地方,得到返回值1。根据上述分析,我们可以看到,代码中并没有输出1123的地方,所以预期输出是1 1而不是1123。
如果你希望输出1123,可以修改代码如下:
def test(x):
if x == 1:
print(x, end=' ')
return 1
else:
print(x, end=' ')
return test(x-1)
test(3)
这样修改后的代码会输出每次调用test()函数时的参数,从而得到输出1 1 2 3。