上級 › 関数名を直接書いた再帰呼び出しは、関数を別名に代入し直すと壊れる › パターン3
関数名を直接書いた再帰呼び出しは、関数を別名に代入し直すと壊れる
再帰関数の中で自分自身を関数名で直接呼び出していると、その関数を別の変数名に代入し直して元の名前を消した途端、再帰呼び出しの箇所がobject not foundエラーになります。
1 count_down <- function(n) { 2 if (n <= 0) return(0) 3 _________________ ^ 4 } 5 run_count_down <- count_down 6 rm(count_down) 7 cat(run_count_down(3), "\n")
Error in count_down(n - 1) : could not find function "count_down"
空欄を埋めて実行を通す
関数の中身は代入し直しても変わりませんが、中に書かれた名前による再帰呼び出しは実行時にその名前を探しに行くため、元の名前が無いと失敗します。
次の問題