第一行:
n=1, i=9
sub2(i, n) = sub(9, 1)
则sub2内,x=9, y=1
然后For循环执行两次,第一次:
n=n+x=0+9=9
x=x-1=9-1=8
第二次:
n=n+x=9+8=17
x=x-1=8-1=7
循环结束
y=n-y=17-1=16
sub2运行结束,此时i=7,n=16
所以第一行的打印结果为 7 16
第二行:
n=16, i=8
sub2(i, n) = sub(8, 16)
则sub2内,x=8, y=16
然后For循环执行两次,第一次:
n=n+x=17+8=25
x=x-1=8-1=7
第二次:
n=n+x=25+7=32
x=x-1=7-1=6
循环结束
y=n-y=32-16=16
sub2运行结束,此时i=6,n=16
所以第二行的打印结果为 6 16
但是答案里第二行的结果是4,12
是啊,是我疏忽了,第一行完毕后循环变量i已经不再是8了。我改一下:
第二行:
n=16, i=6
sub2(i, n) = sub(6, 16)
则sub2内,x=6, y=16
然后For循环执行两次,第一次:
n=n+x=17+6=23
x=x-1=6-1=5
第二次:
n=n+x=23+5=28
x=x-1=5-1=4
循环结束
y=n-y=28-16=12
sub2运行结束,此时i=4,n=12
所以第二行的打印结果为 4 12