用户输入以创建阶乘
User input to create factorial
需要一些帮助来使 def fact(n)
命令处理用户输入。当我输入 "Ruby factorial.rb 5" 之类的内容时,我的脚本运行良好。但是,我需要这个 运行 并带有提示。该脚本应该 运行 类似于:
puts 'Please input a non-negative integer:'
n = gets.chomp.to_i
puts "The factorial of #{n} is #{factorial}
这是我的代码现在的样子。就像我说的那样,它确实有效。当我在 def fact(n)
命令之前添加 n = gets.chomp.to_i
时,我会自动收到值 1。用户输入的数字无关紧要,它总是 returns 1.
#!/user/bin/ruby
def fact(n)
if n==0
1
else
n * fact(n-1)
end
end
puts fact(ARGV[0].to_i)
如何使用用户输入进行这项工作?我想我只是遇到了语法问题,但不知道如何让它工作。
您实际上似乎在要求两种不同的东西。您首先想要的是一个可以执行类似操作的应用程序
$ ruby factorial.rb
> Please input a non-negative integer
(GET USER INPUT)
> The factorial of (USER INPUT) is (FACTORAIL OF USER INPUT)
还有一个命令行工具可以做这样的事情
$ fact 10
> 3628800
第一个可能看起来像这样
def fact(n)
(1..n).inject(:*)
end
puts 'Please input a non-negative integer'
a = gets.to_i
puts "The factorial of #{a} is #{fact(a)}"
第二个看起来像这样
#!/usr/bin/ruby
puts (1..ARGV[0].to_i).inject(:*)
需要一些帮助来使 def fact(n)
命令处理用户输入。当我输入 "Ruby factorial.rb 5" 之类的内容时,我的脚本运行良好。但是,我需要这个 运行 并带有提示。该脚本应该 运行 类似于:
puts 'Please input a non-negative integer:'
n = gets.chomp.to_i
puts "The factorial of #{n} is #{factorial}
这是我的代码现在的样子。就像我说的那样,它确实有效。当我在 def fact(n)
命令之前添加 n = gets.chomp.to_i
时,我会自动收到值 1。用户输入的数字无关紧要,它总是 returns 1.
#!/user/bin/ruby
def fact(n)
if n==0
1
else
n * fact(n-1)
end
end
puts fact(ARGV[0].to_i)
如何使用用户输入进行这项工作?我想我只是遇到了语法问题,但不知道如何让它工作。
您实际上似乎在要求两种不同的东西。您首先想要的是一个可以执行类似操作的应用程序
$ ruby factorial.rb
> Please input a non-negative integer
(GET USER INPUT)
> The factorial of (USER INPUT) is (FACTORAIL OF USER INPUT)
还有一个命令行工具可以做这样的事情
$ fact 10
> 3628800
第一个可能看起来像这样
def fact(n)
(1..n).inject(:*)
end
puts 'Please input a non-negative integer'
a = gets.to_i
puts "The factorial of #{a} is #{fact(a)}"
第二个看起来像这样
#!/usr/bin/ruby
puts (1..ARGV[0].to_i).inject(:*)