tail_recursion.rb

Heads up: This description was created by AI and might not be 100% accurate.

このRubyスクリプトは、1からnまでの整数を合計する関数sumを定義しています。

プログラムの特徴:

アルゴリズム:

  1. 初期化: mという変数に0を代入します。mは合計値を保持するために使用します。
  2. whileループ: nの値が1でない限り、以下の処理を繰り返します。
    • nの値をmに加算します。
    • nの値を1減らします。
  3. 最終的な合計: nが1になった時点で、ループを終了し、mに1を加算した結果を返します。これは、最初の1からnまでの合計です。

例(sum(10)の場合):

  1. n = 10, m = 0
  2. while 10 != 1:
    • m = 0 + 10 = 10
    • n = 10 - 1 = 9
  3. while 9 != 1:
    • m = 10 + 9 = 19
    • n = 9 - 1 = 8
  4. while 8 != 1:
    • m = 19 + 8 = 27
    • n = 8 - 1 = 7
  5. while 7 != 1:
    • m = 27 + 7 = 34
    • n = 7 - 1 = 6
  6. while 6 != 1:
    • m = 34 + 6 = 40
    • n = 6 - 1 = 5
  7. while 5 != 1:
    • m = 40 + 5 = 45
    • n = 5 - 1 = 4
  8. while 4 != 1:
    • m = 45 + 4 = 49
    • n = 4 - 1 = 3
  9. while 3 != 1:
    • m = 49 + 3 = 52
    • n = 3 - 1 = 2
  10. while 2 != 1:
    • m = 52 + 2 = 54
    • n = 2 - 1 = 1
  11. while 1 != 1: (false) ループを終了
  12. m + 1 = 54 + 1 = 55
  13. 55を返します。

最終的に、55という値が標準出力に出力されます。

Ruby code snippet

# frozen_string_literal: true
#=> nil

def sum(n)
  m = 0
  while n != 1
      m += n
      n -= 1
  end
  m + 1
end
#=> :sum

puts sum(10)
55
#=> nil

Executed with Ruby 3.4.9.