3

我正在尝试在 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)

在条件内部,这也不起作用。

4

1 回答 1

4

在上面发布的代码中,您犯了两个小错误

  1. 您已经创建了返回数字的函数,在递归调用它时,您应该在变量“num”中获取该数字以进行进一步处理。
  2. 您犯的第二个错误是在获得所需输出后没有退出循环。这会导致进一步循环,直到 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
于 2012-07-06T04:34:35.760 回答