現在少しだけC#のリハビリ中です。
Schemeのシンタックスに親しみすぎました。
Numbers Games(加減乗算乗除を再帰でやろうというとってもおもしろい話)
ここでは加減乗までしかできていません。(思い出せません)。割り算むじー。あとおまけで階乗。
using System; namespace NumbersGames
{
class Class1
{
/// <summary>
/// 1を加算する
/// </summary>
/// <param name="n"></param>
/// <returns></returns>
static int Add1 (int n)
{
return n + 1;
} /// <summary>
/// 1を減算する
/// </summary>
/// <param name="n"></param>
/// <returns></returns>
static int Sub1 (int n)
{
return n - 1;
} /// <summary>
/// nにmを加算する
/// </summary>
/// <param name="n"></param>
/// <param name="m"></param>
/// <returns></returns>
static int Plus (int n, int m)
{
return m == 0
? n
: Add1(Plus (n, Sub1(m)));
} /// <summary>
/// nからmを減算する
/// </summary>
/// <param name="n"></param>
/// <param name="m"></param>
/// <returns></returns>
static int Minus (int n, int m)
{
return m == 0
? n
: Sub1(Minus (n, Sub1(m)));
} /// <summary>
/// 階乗
/// </summary>
/// <param name="n"></param>
/// <returns></returns>
static int Fact (int n)
{
return n == 0
? 1
: n * Fact(n - 1);
} [STAThread]
static void Main(string[] args)
{
int p = Plus(1, 2);
// 3 int p2 = Plus(100, 12345);
// 12445 int m = Minus(2, 1);
// 1 int m2 = Minus(10000, 1234);
// 8766 int f = Fact(5);
// 120 int f2 = Fact(10);
// 3628800
}
}
} |
0 件のコメント:
コメントを投稿