- 参考記事はこちら
- 関数の中から、その関数自身を呼び出そう
fib <- function(n){
if(n<=2) { if(n>=0) 1 else 0 } else fib(n-1) + fib(n-2)
}
fib(10)
fibonacci <- fib; rm(fib)
- 元のfib()、今のfibonacci()の中ではfib()関数を使っているが、それはもうないので、以下の処理はエラーになる
fibonacci(10) # 55
- 自身を呼び出すのに自身の(変更するかもしれない)「名称」を使う代わりに、「自身」を意味するRecallを使うと、名称変更しても、使い続けられる
fib <- function(n){
if(n<=2) { if(n>=0) 1 else 0 } else Recall(n-1) + Recall(n-2)
}
fibonacci <- fib; rm(fib)
fibonacci(10) # 55
> fib <- function(n){
+ if(n<=2) { if(n>=0) 1 else 0 } else fib(n-1) + fib(n-2)
+ }
>
> fib(10)
[1] 55
>
> fibonacci <- fib; rm(fib)
>
> fibonacci(10) # 55
以下にエラー fibonacci(10) : 関数 "fib" を見つけることができませんでした
>
> fib <- function(n){
+ if(n<=2) { if(n>=0) 1 else 0 } else Recall(n-1) + Recall(n-2)
+ }
> fibonacci <- fib; rm(fib)
> fibonacci(10) # 55
[1] 55