ruby - 如何从 Ruby 中的阶乘方法中排除 float ?

标签 ruby recursion

使用递归 (Ruby) 查找阶乘时,以下代码查找整数的阶乘,但在 float 的情况下失败。我该如何调整呢? 我考虑过像在数学中那样使用域,但我还不知道该怎么做。

def factorial num
  if num < 0
    return "Please provide a whole number."
  end

  if num <=1
    1
  else
    num * factorial(num-1)
  end

end

最佳答案

过滤 float 的最简单方法是使用使它们 float 的东西:) 它们不能被 1 整除。

def factorial num
  if (num % 1 != 0 || num < 0)
    return "Please provide a whole number."
  end

  if num <=1
    1
  else
    num * factorial(num-1)
  end
end

希望对您有所帮助。干杯

关于ruby - 如何从 Ruby 中的阶乘方法中排除 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40798368/

相关文章:

java如何在递归中避免重复

Powershell - Azure Data Lake Store 中的递归

java - 在 Java 中的递归方法中创建 vector 并存储信息

ruby - 我可以安装多少个版本的 gem?

ruby-on-rails - 上传到 Heroku (AWS) 时出错

ruby - 如何在 Ruby 中使用 "fake"C# 样式属性?

javascript - 遍历json树结构并将所有节点添加到列表中

mysql - 尝试连接到 MySQL 本地主机服务器,但浏览器无法加载并要求我下载文件

ruby - 在 Ruby 中按字母顺序对数组进行排序,但最后使用大写单词

java - 该算法的基本情况是什么?