C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で再帰を使用して数値の各桁の合計を求める方法

C#では、再帰(リカーシブ)処理を利用することで、数値の各桁の合計をシンプルかつ効率的に計算できます。本記事では、実際のコード例を通じて、その実装方法と動作の仕組みを詳しく解説します。

対象となる数値の設定

まず、桁の合計を求めたい数値を変数に設定します。ここでは例として「789」を使用します。

int val = 789;
Console.WriteLine("Number: {0}", val);

再帰による桁の合計の計算方法

次のメソッドでは、引数として受け取った数値を10で割った余り(最下位の桁)を取り出し、10で割った商(残りの桁)に対して自分自身を再帰的に呼び出すことで、すべての桁の合計を求めています。

public int addFunc(int val) {
    if (val != 0) {
        return (val % 10 + addFunc(val / 10));
    } else {
        return 0;
    }
}

処理の流れ

この再帰処理は以下の仕組みで動作します。

  • val % 10:数値の最後の桁(1の位)を取り出します。
  • val / 10:最後の桁を取り除いた残りの数値を取得します。
  • 終了条件:valが0になった時点で再帰を終了し、0を返します。

例えば「789」の場合、7 + 8 + 9 の計算が順に行われ、結果として 24 が得られます。

完全なサンプルコード

以下は、C#で再帰を使用して数値の桁の合計を求める完全なプログラムです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Demo {
    class MyApplication {
        static void Main(string[] args) {
            int val, result;
            Calc cal = new Calc();
            val = 789;
            Console.WriteLine("Number: {0}", val);
            result = cal.addFunc(val);
            Console.WriteLine("Sum of Digits in {0} = {1}", val, result);
            Console.ReadLine();
        }
    }

    class Calc {
        public int addFunc(int val) {
            if (val != 0) {
                return (val % 10 + addFunc(val / 10));
            } else {
                return 0;
            }
        }
    }
}

実行結果

Number: 789
Sum of Digits in 789 = 24

このように、再帰処理を活用すれば、for文やwhile文などのループ構文を使わずに、簡潔なコードで桁の合計を求めることができます。ただし、桁数が非常に多い数値を扱う場合は、呼び出しが深くなることによるスタックオーバーフローに注意が必要です。

  1. 再帰を使わずに数値の各桁の合計を求めるPythonプログラム

    プログラミングにおいて、数値の各桁の合計を求める処理は頻出する課題の一つです。再帰呼び出しを使わずにこの問題を解決したい場合、「%」演算子(剰余)、「+」演算子(加算)、そして「//」演算子(整数除算)を組み合わせることで、シンプルかつ効率的に実装できます。 実装のポイント 基本的な考え方は以下の通りです。 「% 10」で最下位の桁(1の位)を取り出す 取り出した桁を合計値に加算する 「// 10」で数値を1桁ずらし、数値が0になるまで繰り返す サンプルコード def sum_of_digits(my_num): sum_val = 0 while (my_num != 0

  2. Pythonで数値の各桁の合計を求める方法(文字列を使わない実装)

    ある数値 num が与えられたとき、その各桁の数字をすべて足し合わせた合計を求めます。ここでは、文字列に変換せず、数値演算だけで解く方法を紹介します。たとえば、入力が num = 512 の場合、5 + 1 + 2 = 8 となるため、出力は 8 になります。解き方の手順合計を格納する変数 sum を 0 で初期化します。num が 0 になるまで、次の処理を繰り返します。sum に「num を 10 で割った余り」(最下位の桁)を加算します。num を「10 で割った商」(整数)で更新します。繰り返しが終わったら sum を返します。アルゴリズムのポイントこの手法では、「10 で割った余り」