第一行:LVISUA
第二行:ALVISU
text1内容:VISUAL
程序就是把VISUAL的字母从后面一个一个的放到前面去!
你们上面讨论的是错误的。答案是这个!
函数调用戚含自己这是递归,数学上用的吵嫌很多,比如阶乘……。
‘------------------------
Private Function fun1(s As String,L As Integer) As String
If L>1 Then fun1=fun1(s,L-1)
s = Right(s,1)&Left(s,L-1)&Mid(s,L,Len(s)-L)
fun1=s
Print fun1
End Function
函数的运行流程 储运天天 说得差不多。
因为有 If L>1 Then fun1=fun1(s,L-1) 这句在函数最开始所以函数下面的语句只有到L<1时才有机会运行。
所以我们可以这样看。当高碰笑L<1时既L=1的时候函数不在调用本函数了,而L的值是从6到1。
'-------------------------------------------------------------
因为是递归的,所以下面的语句L的值是从1到6,并且函数fun1的S参数是传递地址所以。
s = Right(s,1)&Left(s,L-1)&Mid(s,L,Len(s)-L)
fun1=s
Print fun1
当L=1时;S=LVISUA
L=2时;S=ALVISU
L=3 ;S=UALVIS
L=4 ; S=SUALVI
L=5 ; S=ISUALV
L=6 ; S=VISUAL
这样就得到所有的答案了
窗口的第一行:LVISUA
第二行:ALVISU
而Text1里的值是最后的S的值所以Text1里显示:VISUAL
本人经过上机验证。
窗体第一行:lvisua
窗体第二行:ualvisu
text1.text=suualvualvilvisissuual
PS:调用fun1函数:初始值len(s)=6,既L=6,由于if语句相当于只要L>1,那么fun1=fun(s,5),桐升这时,结束if循环,同时结束fun1过程,保存L=5的值,然后继续fun1函数过程保存L的值。这是函数嵌套函数。(定义函数,只要函数名=某一个值或者表达式的时候,就结束函数定兄培义过程。在这儿,fun1=fun1(,l-1)就是结束函数定义语句。然后,由羡轮唯于这儿的fun1函数是嵌套本身函数,它要一直循环,直到不能继续嵌套,既:L=1的时候。这就是这道题的陷阱)
当函数完成所有定义,L=1,2,3,4,5,6(函数定义时,每一次嵌套都保留了L的值)。
因此,总共执行print fun1 6次。在函数执行过程中,s的值每次都赋给fun1,相当于每次都使得s=fun。即,当L=1,s=lvisua;当L=2,s=当L=2,s=lvisua条件下的s。依次类推。。。
望采纳,本人手机党。。。打字蛋疼。。。
第9语句加上后第7语句似乎废了,text1里应该是LVISUA