《情報基礎論演習》 第4回 【関数・スコープ その2】 ------------------------------------------------------------------ ▼ Basic 1 初回の演習で定義した3次元ベクトルの構造体を用い、この構造体を引数と して外積を返す関数を作成しなさい。 外積: A = (a1,a2,a3) B = (b1,b2,b3) AxB = (a2*b3-a3*b2,a3*b1-a1*b3,a1*b2-a2*b1) ------------------------------------------------------------------ ▼ Basic 2 2つの正整数の最大公約数を、ユークリッドの互除法で、再帰を使って求め なさい。ユークリッドの互除法: GCD(x,y) = GCD(y,x/yの余り) ただし、y=0 のときは GCD(x,y)=x ------------------------------------------------------------------ ▼ Basic 3 任意の整数を3桁ごとに「,」で区切って表示する関数を作成しなさい。 例えば、1000000は「1,000,000」と表示する。 次の再帰アルゴリズムを用いること。 もしnが3桁以下ならば、ただそれを表示する。 そうでなければ、n/1000を(このアルゴリズムで)表示してから、「,」 と下3桁を表示する(たとえば、12345678なら、12345を表示してから 「,678」と表示する)。 なお、7を「007」と表示するにはprintfの書式指定で%03dとする。 (入力できる整数の最大値は、2,147,483,647) ------------------------------------------------------------------ ▽ Advanced Basic 3の関数を再帰を使わずに作成しなさい。 配列を宣言し、再帰の時の引数の値を配列に記憶しておき、再帰の時と同 じ手順で処理する方法が考えられる。