用R语言循环计算分式求和:验证代码及多循环实现方案
R语言计算求和式(1/3)+(3/5)+⋯+(99/101)的多种实现
你的while循环代码正确性验证
你的代码逻辑是完全正确的:
- 初始
sum=0,i=1,j=3,对应求和式的第一项1/3 - 每次循环累加
i/j后,i和j同步加2,正好匹配后续每一项的分子分母(3/5、5/7……直到99/101) - 循环条件
i<=99 && j<=101虽有冗余(因为i和j始终相差2,i=99时j必然是101),但不影响计算结果 - 运行代码得到的结果约为48.0494,和求和式的实际结果一致
其他循环实现方案
1. for循环写法
可以直接生成分子的奇数序列,遍历计算每一项:
sum <- 0 # 生成1到99的所有奇数 nums <- seq(1, 99, by = 2) for (i in nums) { sum <- sum + i/(i+2) } print(sum)
也可以简化为直接在循环中控制变量:
sum <- 0 for (i in seq(1, 99, 2)) { sum <- sum + i/(i+2) } print(sum)
2. repeat循环写法
repeat循环需要手动设置终止条件,用break跳出:
sum <- 0 i <- 1 repeat { sum <- sum + i/(i+2) i <- i + 2 # 当i超过99时终止循环 if (i > 99) { break } } print(sum)
更简洁的R向量式写法(非循环)
R语言更推荐向量化操作,代码更简洁且效率更高:
nums <- seq(1, 99, by = 2) sum_result <- sum(nums/(nums+2)) print(sum_result)
这段代码直接生成分子序列,计算每一项的比值后用sum()函数求和,结果和循环写法完全一致。
内容的提问来源于stack exchange,提问作者jhonny
相关产品推荐
相关产品推荐

