【发布时间】:2021-03-23 14:31:38
【问题描述】:
我们有斐波那契:
fib=function(n){
x = c(1,1)
for(i in 3:n) x[i] = x[i-1] + x[i-2]
return(x)
}
我们还有 Switch 功能:
centre <- function(x, type) {
switch(type,
mean = mean(x),
median = median(x))
}
现在我们可以找到例如 10 的斐波那契并查看 10 的平均值和中位数:
fib(10)
centre(fib(10), "mean")
centre(fib(10), "median")
输出:
## [1] 1 1 2 3 5 8 13 21 34 55
## [1] 14.3
## [1] 6.5
# For Fib(10) Mean > Median
问题将是:(如何处理 9/8/7/6 斐波那契或 50 个数字?)
现在我们必须在这个循环中添加:switch 语句来计算平均值和中位数。 在循环的每一轮中检查平均值或中位数是否具有较大的值并打印出两个值中较大的值
所以我不明白如何改进代码并在那里集成这个swith
可能有人可以提示如何在 R 中做到这一点? 似乎我们可以得到每个斐波那契数的所有“平均值”和“中位数”(在我们的例子中是每 1:10),并通过创建附加函数来比较它们
【问题讨论】:
-
你尝试了什么,你在哪里卡住了?我很惊讶在您的尝试中没有看到
mean()或median()... 为什么是 Python 标记? -
mean和median是什么?为什么你“必须”使用switch? -
@Oliver 一般来说,在打开 StackOverflow 的大门之前,您必须尝试一下。 ;)
-
获得作业帮助的指导is here,但 oaxacamatt 的评论总结得很好。通读
?switch的文档,特别注意底部的示例(也许还有你的导师提供的示例?)。搏一搏。如果您仍然卡住,请告诉我们您尝试了什么。但是,当您的任务是使用switch来比较mean和median并且您没有尝试使用这些功能中的任何一个时,您需要自己做更多的工作,然后再我们可以有效地帮助你。 -
看来我“想”错了。首先我创建了开关函数:
centre <- function(x, type) { switch(type, mean = mean(x), median = median(x) }然后为斐波那契使用了另一个函数:fib=function(n){ x = c(1,1) for(i in 3:n) x[i] = x[i-1] + x[i-2] return(x) }假设我想找到前 10 个斐波那契数。任务是使用 switch 语句找到平均值或中位数。我看到我可以通过以下方式找到整个向量中位数和平均值:centre(fib, "mean")centre(fib, "median")但是如何做同样的事情,但是每个“循环”?
标签: r switch-statement fibonacci