You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中无需循环计算多个n值的∑2^i(i=0:n)

不用循环计算∑2^i(i从0到n)的R语言方法

嘿,这个问题我太熟了!你之前遇到的问题其实是因为当n=c(5,10,15)时,0:n会直接生成从0到15的完整序列,而不是分别对应每个n值生成0到n的子序列,所以sum()算出来的是所有项的总和,不是每个n对应的结果。不用循环的话,有两个超实用的办法:

方法一:用向量化函数逐个处理每个n值

R里的sapply()函数可以帮我们对向量里的每个元素单独执行计算,完美解决这个问题:

# 定义要计算的n值
n_values <- c(5, 10, 15)

# 用sapply逐个计算每个n对应的求和结果
result_sapply <- sapply(n_values, function(x) sum(2^(0:x)))

# 查看结果
result_sapply

运行后会得到:[1] 63 2047 65535,正好对应n=5、10、15时的求和结果。

方法二:利用等比数列求和公式(高效首选)

其实这个求和式是首项为1、公比为2的等比数列前n+1项的和,数学公式直接是:2^(n+1) - 1。用这个公式的话,完全不需要生成序列再求和,直接向量化计算,速度快很多:

# 直接用公式计算
result_formula <- 2^(n_values + 1) - 1

# 查看结果
result_formula

得到的结果和方法一完全一致:[1] 63 2047 65535。

可以验证一下,比如n=5时,2^(5+1)-1=64-1=63,和手动计算1+2+4+8+16+32的结果完全吻合,绝对靠谱!

内容的提问来源于stack exchange,提问作者ExamFML

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:01:16