C#で再帰を使用して数値の各桁の合計を求める方法
再帰(リカージョン)を使って数値の各桁の合計を求めるには、C#で合計を計算するメソッドを定義します。再帰とは、メソッドが自分自身を呼び出すことで処理を繰り返す手法です。
桁の合計を計算するメソッド
static int sum(int n) {
if (n != 0) {
return (n % 10 + sum(n / 10));
} else {
return 0;
}
}このメソッドは、引数として渡された数値が0でない限り処理を繰り返し、各桁の合計を返します。数値が0になった時点で再帰が終了し、0を返します。
再帰呼び出しの仕組み
再帰処理の核心となるのは次の行です。毎回の呼び出しで、剰余演算子「%」によって最下位の桁を取り出し、整数除算「/」によって残りの桁に対して再度sumメソッドを呼び出します。
return (n % 10 + sum(n / 10));
例えば「22」の場合、まず2を取り出し、残りの2に対して再び同じ処理を行うことで、2 + 2 = 4という合計が得られます。
サンプルコード
それでは、完全なコードを見てみましょう。
Example
using System;
class Demo {
public static void Main(string[] args) {
int n, result;
n = 22;
Console.WriteLine("Number = {0}", n);
result = sum(n);
Console.WriteLine("Sum of digits = {0}", result);
}
static int sum(int n) {
if (n != 0) {
return (n % 10 + sum(n / 10));
} else {
return 0;
}
}
}Output
Number = 22 Sum of digits = 4
この例では、22の各桁(2と2)の合計である4が出力されます。再帰処理によって、1の位から順に桁を取り出して加算していくシンプルかつ効率的な仕組みです。大きな桁数の数値でも同様に動作するため、桁の合計を求める際に再帰は非常に有効なアプローチといえます。
-
Pythonで自然数の合計を求める3つの方法【while文・for文・sum関数】
Pythonでは、自然数の合計を求める方法がいくつかあります。この記事では、whileループ、forループ、そして組み込み関数sum()を使った3つの方法を、具体的なコード例とともにわかりやすく解説します。 方法1:whileループを使う whileループを使用すると、変数iの値を1ずつ増やしながら、その値を累積的に加算していくことができます。以下の例では、最初の10個の自然数(1から10まで)の合計を計算しています。 s,i=0,0 n=10 while i<n: i=i+1 s=s+i print ("sum of first 10 natural num
-
Pythonで再帰関数を使って階乗を計算する方法を解説
ある数の階乗(Factorial)とは、1からその数までのすべての整数を掛け合わせた積のことです。たとえば、5の階乗は「5 × 4 × 3 × 2 × 1 = 120」となります。再帰関数(Recursive Function)とは、自分自身を呼び出す関数のことを指します。この仕組みを使うと、階乗のように同じ処理を繰り返し行う計算を、シンプルで読みやすいコードで実装できます。再帰による階乗の計算例次のプログラムでは、factorial() 関数が引数を1つ受け取り、値を1ずつ減らしながら自分自身を呼び出します。そして引数が1に達した時点で呼び出しを終了し、結果を順番に掛け合わせて返します。de