我正在尝试在 vbscript 中实现一些递归。
Function largest_prime_factor (ByVal num)
For i = 2 to num/2
If num mod i = 0 Then 'this number is not prime
largest_prime_factor (num / i)
End If
Next
largest_prime_factor = num ''if at this point, we have reached the largest prime
End Function
正如您所看到的,这个脚本基本上是为了给我一个数字的最大质因数而设计的。然而,当我运行打印时,这个脚本仍然向我吐回估算的数字。经过调试,我发现脚本确实会在 for 循环中输入条件,但它不会递归(即:它将继续运行 for 循环,然后在该点之后结束)
关于 VBscript 中的递归,我错过了什么?我也尝试过一些效果
largest_prime_factor = largest_prime_factor (num / i)
在条件里面,这也不起作用。
在上面发布的代码中,您犯了两个小错误
- 您已经创建了返回数字的函数,在递归调用它时,您应该在变量“num”中获取该数字以进行进一步处理。
- 您犯的第二个错误是在获得所需的输出后没有退出循环。这会导致进一步循环,直到 i = num & 在所有情况下你的答案都是 1。
工作代码---
Function largest_prime_factor (ByVal num)
For i = 2 to num/2
If num mod i = 0 Then 'this number is not prime
num= largest_prime_factor (num / i)
Exit For
End If
Next
largest_prime_factor = num ''if at this point, we have reached the largest prime
End Function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)