2013年2月3日日曜日

RでRecall()の使い方(再帰関数)

再帰関数は、

> myfunc <- function(x) {
+   if (x == 1)
+     1
+   else
+     x * myfunc(x - 1)
+ }
> myfunc(5)

[1] 120

とも書けるが、名前を変えてしまうと動かない。

> yourfunc <- myfunc
> rm(myfunc)
> yourfunc(6)
 以下にエラー yourfunc(6) :  関数 "myfunc" を見つけることができませんでした

Recall()を使うと名前を変えても動く。

> myfunc <- function(x) {
+   if (x == 1)
+     1
+   else
+     x * Recall(x - 1)
+ }
> myfunc(6)
[1] 720
> yourfunc <- myfunc
> rm(myfunc)
> yourfunc(6)
[1] 720

http://ofmind.net/doc/r-intro-lecture

0 件のコメント:

コメントを投稿