Code Fix

上級 › 関数名を直接書いた再帰呼び出しは、関数を別名に代入し直すと壊れる › パターン2

関数名を直接書いた再帰呼び出しは、関数を別名に代入し直すと壊れる

再帰関数の中で自分自身を関数名で直接呼び出していると、その関数を別の変数名に代入し直して元の名前を消した途端、再帰呼び出しの箇所がobject not foundエラーになります。

 1  fib <- function(n) {
 2    if (n <= 1) return(n)
 3    _____________ + Recall(n - 2)
            ^
 4  }
 5  math_fib <- fib
 6  rm(fib)
 7  cat(math_fib(6), "\n")
Error in fib(n - 1) : could not find function "fib"

空欄を埋めて実行を通す

広告
広告スロット(未設定)

関数名を直接書いた再帰呼び出しは、関数を別名に代入し直すと壊れる

名前に依存せず自分自身を参照したい場合はRecall()を使う必要があります。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)