统计数组偶数索引值大于前值的数量及R代码错误排查
原代码问题排查
- 语法错误:大括号配对错误,
else分支的位置不符合R语法规范,代码本身就无法正常运行 - 计数器初始化错误:
coun <- 0写在了外层for循环内部,每次循环都会重置计数器为0,无法累计统计结果 - 循环逻辑冗余:额外增加了无意义的外层for循环,还重复定义循环变量
i,逻辑完全混乱 - 比较逻辑错误:奇数长度数组的分支中,比较条件写为
A[i+1]>A[len],完全不符合需求,不需要和数组倒数第一个元素比较 - 规则匹配错误:没有限定仅比较偶数位置和前一个奇数位置的元素,会出现多余的比较统计
修复后可运行代码
# 初始化示例数组 A <- c(1,2,3,1,4,5,5,6,7) coun <- 0 # 直接生成所有偶数下标,自动跳过不参与统计的末尾奇数下标 even_index <- seq(2, length(A), by = 2) for (idx in even_index) { if (A[idx] > A[idx - 1]) { coun <- coun + 1 } } # 输出结果 print(coun)
代码说明
- 用
seq(2, length(A), by=2)生成所有偶数下标,无需单独判断数组长度的奇偶性,自动排除了无对应前序值的末尾奇数下标 - 遍历偶数下标时直接和前一个位置的元素比较,完全匹配统计规则
- 计数器在循环外初始化,可正常累计计数,运行后输出结果为3,符合预期
内容的提问来源于stack exchange,提问作者ggtyk
相关产品推荐
相关产品推荐

