演習 07

問題 1

999 の約数を大きい方から 5 個だけ標準出力せよ。

問題 2

n 行からなる図形をコンソールに表示する関数 printTriangle(n) を考える。 i 行目(先頭の行を 1 行目と数える)は、先頭から ox が交互に i 文字繰り返される。 printTriangle(n) を作成し、以下のプログラムを完成させよ。

void setup() {
  noLoop();
}

void draw() {
  printTriangle(3);
  println();
  printTriangle(5);
  println();
  printTriangle(10);
}

実行結果

o
ox
oxo

o
ox
oxo
oxox
oxoxo

o
ox
oxo
oxox
oxoxo
oxoxox
oxoxoxo
oxoxoxox
oxoxoxoxo
oxoxoxoxox

問題 3

の階乗 を計算する関数 factorial を再帰を用いずに作成し、以下のプログラムを完成させよ。

void setup() {
  noLoop();
}

void draw() {
  printFactorial(0);
  printFactorial(5);
  printFactorial(10);
}

void printFactorial(int n) {
  println("factorial(" + n + ") = " + factorial(n));
}

実行結果

factorial(0) = 1
factorial(5) = 120
factorial(10) = 3628800

問題 4

の階乗 は以下のように再帰的に定義できる。

を計算する関数 factorial を、上記の定義に基づいて再帰を用いて作成し、以下のプログラムを完成させよ。

void setup() {
  noLoop();
}

void draw() {
  printFactorial(0);
  printFactorial(5);
  printFactorial(10);
}

void printFactorial(int n) {
  println("factorial(" + n + ") = " + factorial(n));
}

実行結果

factorial(0) = 1
factorial(5) = 120
factorial(10) = 3628800

問題 5

自然数 の最大公約数 は以下の手続きで得られる。

gcd(m, n):
  nが0より大きい間以下を繰り返す
    mをnで割った余りをnに、元のnをmに代入する
  mを最大公約数として返す

gcd(m, n) を、上記の手続きに基づいて再帰を用いずに作成し、以下のプログラムを完成させよ。

void setup() {
  noLoop();
}

void draw() {
  printGcd(30, 18);
  printGcd(17, 13);
  printGcd(1071, 1029);
}

void printGcd(int m, int n) {
  println("gcd(" + m + ", " + n + ") = " + gcd(m, n));
}

問題 6

自然数 の最大公約数 は以下のように再帰的に定義できる。 で割った余りとする。

gcd(m, n) を、上記の定義に基づいて再帰を用いて作成し、以下のプログラムを完成させよ。

void setup() {
  noLoop();
}

void draw() {
  printGcd(30, 18);
  printGcd(17, 13);
  printGcd(1071, 1029);
}

void printGcd(int m, int n) {
  println("gcd(" + m + ", " + n + ") = " + gcd(m, n));
}

results matching ""

    No results matching ""