《情報基礎論演習》 第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の関数を再帰を使わずに作成しなさい。
配列を宣言し、再帰の時の引数の値を配列に記憶しておき、再帰の時と同
じ手順で処理する方法が考えられる。