我对R完全陌生,并不了解很多。如果有人可以帮助我解决问题,我将不胜感激。这是我第二天尝试针对此问题使用不同的代码,但无法获得任何答案。我知道还有其他与此相关的问题。我已经检查了每个人,但仍然无法理解。请不要将其标记为重复项并提供答案。我真的会很感激。
所以基本上我必须创建一个函数ans(n),该函数返回一个以斐波那契数列的前n个数字为元素的向量。
我知道斐波那契。所以首先我创建了一个vactor:
ans<-function(n){
for(i in x){
return(x[n-1]+x[n-2])
}}
然后我使用了以下命令:
{{1}}
我要去哪里了?
答案 0 :(得分:0)
返回值之前,您需要将值存储在向量中。
x = c(1, 1)
ans <- function(n) {
for(i in 3:n) {
x = c(x, x[i-1]+x[i-2])
}
return(x)
}
输出:
ans(9)
[1] 1 1 2 3 5 8 13 21 34
答案 1 :(得分:0)
Fibbonacci序列的定义代替了for
循环,特别适合于递归函数实现。
# Calculate Fibbonacci term x
fib.x <- function(x) {
if (x <= 1) return(x) else return(fib.x(x - 1) + fib.x(x - 2))
}
# Return the Fibbonacci sequence of length n
fib <- function(n) sapply(1:n, fib.x)
fib(9)
#[1] 1 1 2 3 5 8 13 21 34
您可以制作此even faster by using Rcpp
。