34. 再帰呼び出し


再帰呼び出し

ある関数が関数内で自分自身の関数を呼び出すことを再帰呼び出しという.以下に,階乗を求めるプログラムを紹介する.

 
 myfactorial <- function(n) {
   if (n <= 1) return(1)
   else        return( n * myfactorial(n-1) )
 }
 myfactorial(5)

[1] 120

また,関数 Recall() によって,関数の名前に依存せずに再帰呼び出しを行なうことも出来る.上記の例では関数名を変えると本体で自分自身を呼び出しているところも変更しなければならなかったが,以下のように関数 Recall() を使って再帰呼び出しを行なっていれば,その必要はなくなる.

 
 myfactorial <- function(n) {
   if (n <= 1) return(1)
   else        return( n * Recall(n-1) )
 }
 myfactorial(10)

[1] 3628800