【发布时间】:2019-06-24 21:36:45
【问题描述】:
这个问题让我很头疼,我就是想不通。问题是编写 R 函数,它将返回每个等于或小于 n 的斐波那契数。
到目前为止,我已尝试制作 while 循环。
vast <- function(n) {
if (n==1) return(1)
x <- c(1,1)
while (length(x)-1 < n) {
pos <- length(x)
new <- x[pos-1] + x[pos]
x <- c(x,new)
}
x<-x[x <= n]
return(x)
}
它就像魅力一样,除非我试图退回作品。此时,R 程序开始无限计算并且课程包卡住了。
解决方案也可以写成假设 n 是一个斐波那契数。有什么方法可以减轻这个循环,例如使用 break 或 next 语句,还是从不同的角度更容易解决问题?
【问题讨论】:
-
欢迎来到 SO。我看不出你的功能有什么问题,也许你可以提供一个例子来说明你的问题。可以只用
x替换return(x)。 -
类似地,akilu,该功能就像我宣传的那样工作。请证明您在谈论什么行为;我建议显示您的代码(包括输入参数)和错误/警告/消息,或者您知道您的 R 实例行为不端。
-
抱歉信息不清楚。问题是代码太慢了(正如 Jon Spring 在他的回答中所说),它阻塞了我们课程中使用的数据包。用
max(x)替换length(x)-1使代码更快。