For循环分解:
第1次:n=1
a=fun(b,n)+b
fun内部运行情况:
形参x=y-1+n=1-1+1=1,实参b=1
形参y=x+y-n=1+1-1=1,实参n=1
fun=x+y=1+1=2
a=fun(b,n)+b=2+1=3
第2次:n=1+1=2
b=fun(n,a)+a
fun内部运行情况:
形参x=y-1+n=3-1+2=4,实参n=4
形参y=x+y-n=4+3-4=3,实参a=3
fun=x+y=4+3=7
b=fun(n,a)+a=7+3=10
第3次:n=4+1=5
a=fun(b,n)+b
fun内部运行情况:
形参x=y-1+n=5-1+5=9,实参b=9
形参y=x+y-n=9+5-5=9,实参n=9
fun=x+y=9+9=18
a=fun(b,n)+b=18+9=27
第4次:n=9+1=10>6,退出循环
此时 n=10, a=27, b=9
所以输出结果为 10 27 9
这道题的关键点在于函数fun的参数x和y是传址调用,函数内部对这两个形参的值的改变会直接改变外部实参n、a、b的值
碰到这种问题,我通常是这样来计算的。首先看最内层的循环,计算它会循环多少,把这个数写下来(如果是N,就记着N*)。就本题来看,最内层是j循环,它从5循环到1,共循环5次,所以,我会在草稿纸上写5* ,现在需要*多少还不知道,所以,我再往其上一层查看,看看还有循环吗?是循环多少次,如果有,按照此法写下去,如果没有,就写1,计算结果。就本题看,其上一层是i循环,从1循环到3,所以,我会写 5*3* ,再往其上一层看,没有了循环,所以,最后会写成这样的算式:5*3*1=15。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)