C#でパスカルの三角形を生成するプログラムの書き方
パスカルの三角形とは、数値が三角形の形に並んだもので、三角形の両端は必ず「1」となり、内部の数値はその真上にある2つの数値の合計になります。この三角形は二項係数(組み合わせの数)を視覚的に表したものとしても知られています。
ここでは、C#を使ってパスカルの三角形を作成するプログラムを紹介します。
サンプルプログラム
using System;
namespace PascalTriangleDemo {
class Example {
public static void Main() {
int rows = 5, val = 1, blank, i, j;
Console.WriteLine("Pascal's triangle");
for(i = 0; i<rows; i++) {
for(blank = 1; blank <= rows-i; blank++)
Console.Write(" ");
for(j = 0; j <= i; j++) {
if (j == 0||i == 0)
val = 1;
else
val = val*(i-j+1)/j;
Console.Write(val + " ");
}
Console.WriteLine();
}
}
}
}実行結果
上記プログラムを実行すると、次のような出力が得られます。
Pascal's triangle 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
プログラムの解説
このプログラムでは、パスカルの三角形を入れ子(ネスト)になったforループを使って生成しています。
- 外側のforループ: 三角形の各行に必要な空白(インデント)を出力し、行の位置を整えます。
- 内側のforループ: 各行に出力する数値を計算して表示します。
該当するコード部分は以下の通りです。
for(i = 0; i<rows; i++) {
for(blank = 1; blank <= rows-i; blank++)
Console.Write(" ");
for(j = 0; j <= i; j++) {
if (j == 0||i == 0)
val = 1;
else
val = val*(i-j+1)/j;
Console.Write(val + " ");
}
Console.WriteLine();
}数値の計算ロジック
各数値は、前の値をもとに val = val * (i - j + 1) / j という式で求められます。これは二項係数の漸化式を利用した効率的な計算方法です。行の先頭(j == 0)や最初の行(i == 0)では値は必ず「1」になるため、条件分岐で直接代入しています。
このように、パスカルの三角形は単純なループ処理だけで美しい数列のパターンを出力できる、プログラミング学習に最適な題材です。
-
C++で三角形の重心を求めるプログラムの作成方法
この記事では、三角形の3つの頂点の座標を格納した2次元配列が与えられたときに、その三角形の重心を求めるC++プログラムの作成方法を解説します。 三角形の重心とは、三角形の3本の中線がすべて交わる点のことです。 また、三角形の中線とは、ある頂点と、その対辺(向かい合う辺)の中点を結ぶ線分のことを指します。 それでは、具体的な例を使って問題を確認してみましょう。 入力 (-3, 1), (1.5, 0), (-3, -4) 出力 (-1.5, -1) 説明 重心 (x, y) = ((-3 + 1.5 - 3) / 3, (1 + 0 - 4) / 3) = (-1.5, -1) 解法のアプロ
-
Pythonでパスカルの三角形のn番目の行を求める方法を解説
パスカルの三角形とはある数 n が与えられたとき、パスカルの三角形の n 番目(0始まり)の行を求めることを考えます。パスカルの三角形は、次のようなルールで作成できます。最上行は「1」のみで構成される2行目以降は、左上の数と右上の数を足し合わせた値が並ぶ具体的には、以下のような形になります。例えば入力が 4 の場合、出力は [1, 4, 6, 4, 1] となります。解法のアプローチこの問題は、以下の手順で解くことができます。n が 0 の場合 → [1] を返すn が 1 の場合 → [1, 1] を返すls を [1, 1]、temp を [1, 1] として初期化するi を 2 から n