RでFibonacci数を計算
参考プログラム: fibonaccies.zip(UFT-8/LF)
Fibonacci数列 $f_n$ \begin{align*} f_0 &=0,\\ f_1 &=1,\\ f_n&= f_{n-1} + f_{n-2},\quad n\geq 2 \end{align*} を計算するRのプログラムを考えてみる。繰り返しによって$f_n$を求める
fibonacci <- function(n){ if (n == 0) return(0) else if (n == 1) return(1) else { f0 = 0 f1 = 1 for(i in 2:n){ f = f0 + f1 f0 = f1 f1 = f } return(f) } }
再帰的に$f_n$を求める
fibonacci <- function(n){ if (n == 0) return(0) else if (n == 1) return(1) else return(fibonacci(n-1) + fibonacci(n-2)) }
Fibonacci数列をベクトルで返す
# n番目までのFibonacci数をベクトルで返す fibonacci_vector <- function(n) { if(n == 0) return(c(0)) else if(n==1) return(c(0, 1)) else { fl <- c(0, 1) for(i in 3:(n + 1)) { f <- fl[i - 1] + fl[i - 2] #fl <- append(fl, f) fl <- c(fl, f) } return(fl) } }
Fibonacci数列をリストで返す
# n番目までのFibonacci数をリストで返す fibonacci_list <- function(n) { if(n == 0) return(list(0)) else if(n == 1) return(list(0, 1)) else { fl <- list(0, 1) for(i in 2:n) { f <- fl[[i-1]] + fl[[i]] fl <- append(fl, f) #fl <- list(fl, list(f)) } return(fl) } }