ruby 简单例子
2019-10-26 19:19:04
供稿:网友
让我们写一个计算阶乘的函数.对于阶乘的数学定义如下:
n! = 1 (当 n==0 时)
= n * (n-1)! (其它情况)
在Ruby里,可以这样来写:
代码如下:
def fact(n)
if n == 0
1
else
n * fact(n-1)
end
end
你可能会发现 end 的反复出现,正因为如此,Ruby被叫做"类Algol"语言.(实际上,Ruby的语法更像Eiffel).同时,你也可能会发现这段函数缺少return语句.在这里是可以用return的,但却不是必须的,因为一个Ruby的函数会自动返回它所最后赋值的元素.
让我们来试试我们的阶乘函数.加入一行代码会使它成为一个可工作的程序:
代码如下:
# Program to find the factorial of a number
# Save this as fact.rb
def fact(n)
if n == 0
1
else
n * fact(n-1)
end
end
print fact(ARGV[0].to_i), "/n"
这里,ARGV是一个包含命令行参数的数组,to_i将字符串转化为整数.
% ruby fact.rb 1
1
% ruby fact.rb 5
120
当参数为40时它可以工作吗?它将使你的计算器产生溢出(overflow)...
% ruby fact.rb 40
815915283247897734345611269596115894272000000000
它确实算出来了.实际上,Ruby能处理任何你机器的内存所允许的整数.实际上400!也可以:
% ruby fact.rb 400
64034522846623895262347970319503005850702583026002959458684
44594280239716918683143627847864746326467629435057503585681
08482981628835174352289619886468029979373416541508381624264
61942352307046244325015114448670890662773914918117331955996
44070954967134529047702032243491121079759328079510154537266
72516278778900093497637657103263503315339653498683868313393
52024373788157786791506311858702618270169819740062983025308
59129834616227230455833952075961150530223608681043329725519
48526744322324386699484224042325998055516106359423769613992
31917134063858996537970147827206606320217379472010321356624
61380907794230459736069956759583609615871512991382228657857