階乗の計算、カードの並べ替え、ハノイの塔、 などは実は同じことの繰り返しである。 まずは階乗計算をプログラムにしたものを見てみよう。
「ある正の整数 n について、その階乗を求めよ。」という定義は、
である。これの意味するところは「n から順番に一つ小さい数を掛けていって、
1 になるまで求めよ」である。もちろん while -- end
や for -- end
を使ってもよいが、method を用いることもできる。
def_factorial.rb
#!/usr/koeki/bin/ruby
def factorial(m)
if m == 1
1
else
m * factorial(m-1)
end
end
n = 1
# n = 2
# n = 3
# n = gets.chomp.to_i
printf("%dの階乗は%dです\n", n, factorial(n))