前n个奇数的总和

时间:2015-12-03 01:52:57

标签: r function for-loop while-loop

我试图创建一个函数,它取前n个奇数的总和,即从i = 1到n的总和(2i-1)。

  • 如果n = 1,则应输出1
  • 如果n = 2,则应输出4

我在使用仅输出第n个术语的for循环时出现问题

n <-2
for (i in 1:n)
{ 
  y<-((2*i)-1)                    
}
y

3 个答案:

答案 0 :(得分:5)

在R编程中,我们尝试避免循环

cumsum  ( seq(1,2*n, by=2)  ) 

如果你不想要一系列的部分和,只需使用'sum'。

答案 1 :(得分:3)

这里实际上不需要使用循环或构造前n个奇数的序列 - 这是一个算术系列,所以我们知道封闭形式的前n个元素的总和:

sum.first.n.odd <- function(n) n^2
sum.first.n.odd(1)
[1] 1
sum.first.n.odd(2)
[1] 4
sum.first.n.odd(100)
[1] 10000

这比基于forsum的任何解决方案都更有效,因为它永远不会计算序列的元素。

[[看到标题 - OP显然知道分析结果并想要其他东西......]]

答案 2 :(得分:2)

试试这个:

sum=0 
n=2
for(i in seq(1,2*n,2)){
   sum=sum+i
}

但是,当然,使用循环时R很慢。这就是人们应该避免它们的原因。

相关问题