R语言FizzBuzz与斐波那契自定义函数运行异常问题求解
R语言两项函数任务修正方案
任务1:FizzBuzz_function实现
原有代码问题
- 函数定义语法错误:R中定义函数需要使用
function()关键字,原代码命名不符合要求(指定函数名为FizzBuzz_function) readline()获取的用户输入为字符型,未转换为数值型,无法执行取模运算- 仅对单个参数n做判断,未遍历1到n的所有整数,不符合输出1到n对应结果的需求
修正后代码
# 定义符合要求的函数 FizzBuzz_function <- function(n) { # 遍历1到n的所有数 for (i in 1:n) { if(i %% 3 == 0 & i %% 5 == 0) { print("FizzBuzz") } else if(i %% 3 == 0) { print("Fizz") } else if(i %% 5 == 0) { print("Buzz") } else { print(i) } } } # 获取用户输入并转换为数值 input_n <- as.integer(readline(prompt="Enter your number: ")) # 调用函数 FizzBuzz_function(input_n)
任务2:斐波那契数列第n位计算函数实现
原有代码问题
readline()获取的输入为字符型,未转换为数值型- 函数返回值为完整斐波那契数列向量,而非要求的第n位数值
- 未做边界校验,输入n<1时会出现报错
修正后代码
# 定义斐波那契计算函数 fib <- function(n) { # 边界校验 if (n < 1) { stop("请输入大于等于1的正整数") } if (n == 1 | n == 2) { return(1) } a <- 1 b <- 1 for (i in 3:n) { c <- a + b a <- b b <- c } return(b) } # 获取用户输入并转换为数值 input_n <- as.integer(readline(prompt="Enter your number: ")) # 调用函数输出第n位结果 print(fib(input_n)) # 验证规则:n=20时运行print(fib(20))输出结果为6765
内容的提问来源于stack exchange,提问作者Beth T
相关产品推荐
相关产品推荐

