构建一个ruby阶乘计算器

时间:2015-02-16 04:33:59

标签: ruby statistics factorial

我正在努力在ruby中编写一个阶乘程序,并且我试图将其写入其中,如下所示:

  1. 要求用户输入值以在
  2. 上执行阶乘
  3. 接受输入的值
  4. 对其执行析因 和4.使用" puts"
  5. 返回阶乘值

    我的目标是让它工作,然后通过构建它以包括其他统计功能来扩展它。

    到目前为止,这是我的代码:

    puts "Welcome to the Calculator for Ruby"
    puts "Please enter your value to value"
    
    #N factorial value
    def n
    n = gets.chomp
    end
    def fact   
        n * fact(n-1)  
    
    end  
    puts fact(n) 
    

    Fyi,我可能会添加我已经看过网络上可用的通用因子代码,但我尝试做的是设置它以便用户定义n而不是静态设置n但是当我尝试要做到这一点,我的代码如上所述错误与以下错误消息: "事实上" :错误的参数数量(1表示0)(ArgumentError)

    我对某些措辞表示道歉,不包括具体问题。我的问题将是3部分:

    1. 如何正确编写因子计算以对用户提供的值进行操作? (我看到了答案)。

    2. 执行计算后,如何存储该值,以便在用户想要将其调用以进行其他计算时保留该值。

    3. 最后,在ruby中编写统计函数有什么好的指导来源吗?

    4. 感谢大家的帮助

3 个答案:

答案 0 :(得分:2)

  1. 无需使用n声明def,只需将其分配(例如n = gets.chomp)。

  2. 您必须在fact函数中加入命名参数,例如def fact(x)

  3. fact(x)函数需要一个基本案例,因为您正在使用递归。

  4. 您必须将用户输入字符串n转换为数字,例如n.to_i

  5. puts "Welcome to the Calculator for Ruby"
    puts "Please enter your value to value"
    def fact(x)
      (x <= 1) ? 1 : x * fact(x-1)
    end  
    n = gets.chomp.to_i
    puts "#{n}! => #{fact(n)}"
    

答案 1 :(得分:1)

更简单的方法。只需注入从1到n的数字。

puts 'Welcome to the Calculator for Ruby'
puts 'Please enter your value to value'
n = gets.chomp.to_i
puts (1..n).inject(:*)

答案 2 :(得分:0)

可能不是最好的解决方案但是你去了

puts "Welcome to the Factorial Calculator for Ruby"
puts "Please enter your value to exaluate"

n = gets.chomp.to_i

def fact(num)
    return num <= 1 ? 1 : num * fact(num - 1)
end

puts "The factorial of #{n} is #{fact(n)}