我正在尝试编写一个程序来执行阶乘。我做了这个:'*'不能被强制转换为Fixnum(TypeError)
continue_loop=true
def fact(n)
if n==0
1
else
n*fact(n-1)
end
end
while continue_loop
puts "Welcome to the factorial machine. Write a number! Write exit to exit the program"
user=gets.chomp
if user=="exit"
continue_loop=false
else puts fact(user.to_i)
puts "--------"
end
end
我上线得到* can't be coerced into Fixnum(TypeError)
:
n*fact(n-1)
和
else puts fact(user.to_i)
我发现,我得到这个错误,因为n*fact(n-1)
的右手边是nil
。但是,然后,我不明白我如何做递归。
它可以用inject
完成,但我想学习使用递归。
你的程序似乎很好,我只是复制粘贴它,它工作得很好。你可以尝试在网上翻译中重现吗? https://repl.it/languages/ruby –
你的问题是什么? – sawa
@sawa感谢编辑和对我的错误感到抱歉,英语不是我的母语,正如你所看到的,我对编程很陌生)。我会尽量不要在将来的问题中提出这些问题(以及包括实际问题)。 – Lenok