【发布时间】:2019-06-30 16:27:29
【问题描述】:
我尝试编写一个函数来计算 R 中的第 n 个斐波那契数。我可以递归地执行此操作。
fibonacci = function(n){
if (n == 1) {return(1)}
if (n == 2) {return(2)}
return(fibonacci(n - 1) + fibonacci(n - 2))
}
我在 R 中找不到任何示例,但从其他语言的指南中我想出了以下内容。但是它似乎并没有运行得更快。
fibonacci = function(n, lookup = NULL){
if (is.null(lookup)) {
lookup = integer(n + 1)
}
if (n == 1) {return(1)}
if (n == 2) {return(2)}
lookup[1] = 1
lookup[2] = 2
if (lookup[n - 1] == 0) {
lookup[n - 1] = fibonacci(n - 1, lookup)
}
if (lookup[n - 2] == 0) {
lookup[n - 2] = fibonacci(n - 2, lookup)
}
return(lookup[n - 1] + lookup[n - 2])
}
【问题讨论】:
-
那么您的问题到底是什么?这只是关于速度吗?你用什么时间来测试你的代码?
标签: r recursion dynamic-programming fibonacci