简单的while循环在r进入无限循环

时间:2014-08-16 13:20:29

标签: r while-loop

我正在尝试编写一个R程序来计算几何级数的总和而不使用标准公式,如下所示:

h <- function(x,n){
    sum.value <- 1
          i <- 1
       while ( i <= n){
          sum.value = sum.value + x^i
      }
return(sum.value)
}

当我运行此代码时,它进入无限循环。使用for循环运行它时没有遇到麻烦。真的很奇怪,同样的问题不适用于while循环,因为while循环比for循环更基本。我错过了什么吗?感谢。

2 个答案:

答案 0 :(得分:3)

您忘了增加i。另外我不明白为什么sum.value以1开头。

h <- function(x,n){
  sum.value <- 0
  i <- 1
  while ( i <= n){
    sum.value = sum.value + x^i
    i <- i+1
  }
  return(sum.value)
}

h(3,5)
#[1] 363

当然,使用矢量化会更有效,更简单:

sum(3^(1:5))
#[1] 363

答案 1 :(得分:1)

R中的for循环自动递增。一个while循环没有。如果你想让它工作,你需要在while循环中为i添加一个增量。

相关问题