基于R语言while与for循环实现向量累加超限判定算法的需求
在R语言中用while和for循环实现累加超限检测算法
下面分别用for和while循环实现需求:给定向量V和整数M,依次累加元素直到和超过M,返回导致超限的元素、累加过的元素个数(循环次数)。
1. 使用for循环实现
accumulate_over_m_for <- function(V, M) { total <- 0 count <- 0 over_element <- NULL for (elem in V) { count <- count + 1 total <- total + elem if (total > M) { over_element <- elem break } } # 处理整个向量累加都没超过M的情况 if (is.null(over_element)) { return(list( 超限元素 = "无(整个向量累加未超过M)", 循环次数 = count, 最终累加和 = total )) } return(list( 超限元素 = over_element, 循环次数 = count, 最终累加和 = total )) }
用法示例
# 测试用例1:中途超限 V1 <- c(2, 5, 3, 7) M1 <- 8 accumulate_over_m_for(V1, M1) # 返回:$超限元素 = 3,$循环次数 = 3,$最终累加和 = 10 # 测试用例2:全部累加未超限 V2 <- c(1, 2, 3) M2 <- 10 accumulate_over_m_for(V2, M2) # 返回:$超限元素 = "无(整个向量累加未超过M)",$循环次数 = 3,$最终累加和 = 6
2. 使用while循环实现
accumulate_over_m_while <- function(V, M) { total <- 0 count <- 0 index <- 1 over_element <- NULL len <- length(V) while (index <= len) { count <- count + 1 elem <- V[index] total <- total + elem if (total > M) { over_element <- elem break } index <- index + 1 } # 处理整个向量累加都没超过M的情况 if (is.null(over_element)) { return(list( 超限元素 = "无(整个向量累加未超过M)", 循环次数 = count, 最终累加和 = total )) } return(list( 超限元素 = over_element, 循环次数 = count, 最终累加和 = total )) }
用法示例
# 测试用例1:中途超限 V1 <- c(2, 5, 3, 7) M1 <- 8 accumulate_over_m_while(V1, M1) # 返回:$超限元素 = 3,$循环次数 = 3,$最终累加和 = 10 # 测试用例2:第一个元素就超限 V3 <- c(10, 2, 3) M3 <- 5 accumulate_over_m_while(V3, M3) # 返回:$超限元素 = 10,$循环次数 = 1,$最终累加和 = 10
内容的提问来源于stack exchange,提问作者Gaspar
相关产品推荐
相关产品推荐

