VBscript的递归问题

时间:2012-07-03 15:59:55

标签: for-loop recursion vbscript

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

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

1 个答案:

答案 0 :(得分:4)

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

  1. 您已经创建了返回数字的函数,在递归调用它时,您应该在变量'num'中获取该数字以进行进一步处理。
  2. 你得到的第二个错误是你在获得所需的输出后没有退出循环。这导致循环进一步循环直到i = num&在所有情况下,你的答案都是1。
  3. 工作代码---

    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