
VB问题 单击一次命令按钮Command1后
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
若以下回答无法解决问题,邀请你更新回答
1个回答
展开全部
这里面有两个关键点要注意:
1、P(I)、P(I + 1)、P(I + 2)这三次调用中,P(I)的参数是变量,所以是传址调用,函数里面对形参N的修改,会直接改变实参I的值(会变为4),而P(I + 1)和P(I + 2)的参数是表达式,所以是传值调用,N的值不会改变I的值。因此,P(I)运行完毕,I=4,而P(I + 1)运行完毕,I仍然是4;
2、Sum是静态变量,它的值会保持上一次运行后的值,不会被初始化。
因此:
S = P(I) + P(I + 1) + P(I + 2)
= P(1) + P(I + 1) + P(I + 2)
= 6 + P(5) + P(I + 2)
= 6 + 12 + P(6)
= 6 + 12 + 18
= 36
所以最终结果是36
补充说明,由于在函数P中,N始终都是从1循环到3,所以作为参数的N是没有起到任何作用的,也就是说不管传入什么参数,最终结果都是不变的,比如:
S = P(I + 10) + P(I + 100) + P(I + 1000) = 36
S = P(10) + P(1234) + P(3) = 36
S = P(0) + P(1) + P(2) = 36
……
换句话说P的值只跟它的运行次数有关,第一次6,第二次12,第三次18……,比如:
S = P(1) = 6
S = P(1) + P(1) = 6 + 12 = 18
S = P(1) + P(1) + P(1) = 6 + 12 + 18 = 36
……
因此尽管我上面说的第一个关键点看起来很烧脑,但其实并没什么卵用,真正起作用的是第二点。
1、P(I)、P(I + 1)、P(I + 2)这三次调用中,P(I)的参数是变量,所以是传址调用,函数里面对形参N的修改,会直接改变实参I的值(会变为4),而P(I + 1)和P(I + 2)的参数是表达式,所以是传值调用,N的值不会改变I的值。因此,P(I)运行完毕,I=4,而P(I + 1)运行完毕,I仍然是4;
2、Sum是静态变量,它的值会保持上一次运行后的值,不会被初始化。
因此:
S = P(I) + P(I + 1) + P(I + 2)
= P(1) + P(I + 1) + P(I + 2)
= 6 + P(5) + P(I + 2)
= 6 + 12 + P(6)
= 6 + 12 + 18
= 36
所以最终结果是36
补充说明,由于在函数P中,N始终都是从1循环到3,所以作为参数的N是没有起到任何作用的,也就是说不管传入什么参数,最终结果都是不变的,比如:
S = P(I + 10) + P(I + 100) + P(I + 1000) = 36
S = P(10) + P(1234) + P(3) = 36
S = P(0) + P(1) + P(2) = 36
……
换句话说P的值只跟它的运行次数有关,第一次6,第二次12,第三次18……,比如:
S = P(1) = 6
S = P(1) + P(1) = 6 + 12 = 18
S = P(1) + P(1) + P(1) = 6 + 12 + 18 = 36
……
因此尽管我上面说的第一个关键点看起来很烧脑,但其实并没什么卵用,真正起作用的是第二点。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询