You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:06:07