如何将R语言中判断整数a是否为b约数的算法封装为自定义函数
封装实现方案
你可以直接将现有逻辑封装为独立函数,下面提供两种常用的封装形式,所有提示语已翻译为中文:
形式1:保留原交互式输入逻辑
适合直接运行调用,自动引导用户输入参数:
# 功能:交互式判断整数a是否为整数b的约数 judge_divisor_interactive <- function(){ cat("我们将判断整数a是否为整数b的约数\n") # 校验输入整数的辅助逻辑,避免重复代码 get_valid_integer <- function(prompt_text){ while(TRUE){ input_num <- as.numeric(readline(prompt = prompt_text)) if(is.na(input_num)){ cat("请输入有效的数值:\n") } else if(input_num %% 1 != 0){ cat(paste0(input_num, " 不是整数,请输入有效整数:\n")) } else { return(as.integer(input_num)) } } } a <- get_valid_integer("请输入整数a:") b <- get_valid_integer("请输入整数b:") if(b %% a == 0){ cat(paste0(a, " 是 ", b, " 的约数。\n")) return(TRUE) } else { cat(paste0(a, " 不是 ", b, " 的约数。\n")) return(FALSE) } } # 调用方式:直接运行函数名即可 # judge_divisor_interactive()
形式2:参数传入式(无交互)
适合嵌入其他代码逻辑中使用,参数直接传入函数即可:
# 功能:判断整数a是否为整数b的约数 # 参数a:待判断的约数 # 参数b:待判断的被除数 judge_divisor <- function(a, b){ # 先校验参数合法性 if(!is.numeric(a) || a %% 1 != 0){ stop("参数a必须为整数") } if(!is.numeric(b) || b %% 1 != 0){ stop("参数b必须为整数") } if(b %% a == 0){ cat(paste0(a, " 是 ", b, " 的约数。\n")) return(TRUE) } else { cat(paste0(a, " 不是 ", b, " 的约数。\n")) return(FALSE) } } # 调用示例 # judge_divisor(3, 12) # judge_divisor(5, 12)
封装说明
- 两种形式都保留了原始代码的校验逻辑,避免非法输入报错
- 新增了返回值,判断结果为真返回
TRUE,为假返回FALSE,方便后续代码调用结果 - 把重复的输入校验逻辑抽为内部辅助函数,减少冗余代码,更易维护
内容的提问来源于stack exchange,提问作者user17029008
相关产品推荐
相关产品推荐

