Факториал с нуля генерирует несколько выходов в RStudio - PullRequest
0 голосов
/ 21 мая 2018

Я знаю, что есть встроенная функция, но я возился с созданием факториалов с нуля, как идея с сайта по кодированию, который я читал.Код здесь:

recursion <- function(n) {

  if(n <= 1) {
    print(1)
  } else { 
    print(n * recursion(n-1))
  }
}

70% времени я получаю этот вывод:

> recursion(5)
[1] 1
[1] 2
[1] 6
[1] 24
[1] 120

но 30% времени я получаю:

> recursion(5)
[1] 120

Может ли кто-нибудь помочь мне понять, почему это может быть, и что я могу сделать, чтобы получить только один вывод?

не уверен, разрешено ли это, но у меня возникает та же проблема, когда я пытаюсь реализовать мемоизацию.

memoization <- function(){
  values <- 1
  Factorial_mem <- function(x){
    if(x < 0){
      stop("Factorials can only be computed when x is equal to, or greater 
        than, zero")
    }
    if (x == 0 | x == 1){
      return(1)
    } 
    if (length(values) < x){
      values <<- `length<-`(values, x)
    }
    if (!is.na(values[x])){
      return(values[x])
    }
    values[x] <<- x * factorial(x-1)
    print(values)

  }
  Factorial_mem
}

выводит иногда:

> Factorial_mem(5)
[1] 120

выводит большую часть времени:

> Factorial_mem(5)
[1] 1 NA NA NA 120

Если мне нужно предоставить дополнительную информацию для уточнения, пожалуйста, дайте мнезнаю, и я могу предоставить это.Я не уверен, уместен ли тот факт, что я использую RStudio.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...