2012-07-03 2 views
3

Я пытаюсь реализовать некоторую рекурсию в 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) 

Внутри условного и это тоже не сработало.

+0

+1 к вопросу – Amol

ответ

3

В коде размещен выше, вы сделали две незначительных ошибки

  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