授業/C言語基礎/再帰呼び出し/練習問題
をテンプレートにして作成
開始行:
*13A-1: フィボナッチ数(難易度♠) [#zfcdbc5d]
フィボナッチ数列は、一つ前の項と二つ前の項の和で定義され...
\[ \begin{align} f_1 &= 1 \\ f_2 &= 1 \\ f_n &= f_{n-1} +...
[math]n[/math] を大きくすると、隣り合うフィボナッチ数の比...
20番目のフィボナッチ数 [math]f_{20}[/math] を求めるプログ...
----
*13A-2: ユークリッドの互除法(難易度♠) [#t75ae6a5]
ユークリッドの互除法は、二つの正の整数 [math]m[/math], [m...
-[math]m[/math] が [math]n[/math] で割り切れるとき、[math...
-そうでないとき、[math]m[/math] を [math]n[/math] で割っ...
ユークリッドの互除法を用いて 84 と 49 の最大公約数を求め...
----
*13A-3: 基数変換(難易度♠♠) [#hc419f79]
10進数を2進数に変換するには、まず 2 で割り、商と余りを求...
求めた商をさらに 2 で割り、商と余りを求める。
これを商が 0 になるまで繰り返し、求めた余りを逆順に並べる...
たとえば、10進数の 10 について考えると、10 を 2 で割ると ...
余りを逆順に並べると 1010 になり、これが10進数 10 を2進数...
10進数 65 を2進数に変換して出力するプログラムを作成せよ。
----
*13A-4: ハノイの塔(難易度♠♠♠) [#z1...
ハノイの塔とは、次のようなパズルである。
[math]n[/math]枚の大きさが異なる円盤がある。
大きな円盤を小さな円盤の上に置くことはできず、円盤を置く...
今、A にすべての円盤が下から大きい順に積まれている。
すべての円盤を C に移動させるには、どうしたらいいか。
5段のハノイの塔を解く手順を出力するプログラムを作成せよ。
----
*13A-5: 配列のコピー(難易度♠♠) [#xae0cf1a]
次の部分プログラムは、配列aの要素を配列bに再帰的にコピー...
プログラムを完成させよ。
#geshi(c){{
/*
* 配列aの要素を配列bに再帰的にコピーする
*/
void copy(int a[], int b[], int from, int to) {
if (from <= to) {
b[from] = a[from];
copy(a, b, , );
}
}
int main(void) {
int a[5] = {1, 2, 3, 4, 5}, b[5];
copy(a, b, 0, 4); // 配列aから配列bへ要素番号0から4ま...
int i;
for (i = 0; i < 5; i++) {
printf("%d\n", b);
}
return 0;
}
}}
----
*13A-6: 人口シミュレーション(難易度♠) [#uc006623]
[math]n[/math]年の人口を[math]P_n[/math]とすると、人口の...
\[ \begin{align} \Delta P_n &= P_n - P_{n-1} = \alpha P_{...
P_n &= (1 + \alpha) P_{n-1} \end{align} \]
ここで、[math]\alpha[/math]は、前年同月比の人口増加率を表...
2015年(7月1日現在)の日本人人口は1億2523万4000人で、前年...
このときの人口増加率が続くとして、50年後(2065年)の日本...
終了行:
*13A-1: フィボナッチ数(難易度♠) [#zfcdbc5d]
フィボナッチ数列は、一つ前の項と二つ前の項の和で定義され...
\[ \begin{align} f_1 &= 1 \\ f_2 &= 1 \\ f_n &= f_{n-1} +...
[math]n[/math] を大きくすると、隣り合うフィボナッチ数の比...
20番目のフィボナッチ数 [math]f_{20}[/math] を求めるプログ...
----
*13A-2: ユークリッドの互除法(難易度♠) [#t75ae6a5]
ユークリッドの互除法は、二つの正の整数 [math]m[/math], [m...
-[math]m[/math] が [math]n[/math] で割り切れるとき、[math...
-そうでないとき、[math]m[/math] を [math]n[/math] で割っ...
ユークリッドの互除法を用いて 84 と 49 の最大公約数を求め...
----
*13A-3: 基数変換(難易度♠♠) [#hc419f79]
10進数を2進数に変換するには、まず 2 で割り、商と余りを求...
求めた商をさらに 2 で割り、商と余りを求める。
これを商が 0 になるまで繰り返し、求めた余りを逆順に並べる...
たとえば、10進数の 10 について考えると、10 を 2 で割ると ...
余りを逆順に並べると 1010 になり、これが10進数 10 を2進数...
10進数 65 を2進数に変換して出力するプログラムを作成せよ。
----
*13A-4: ハノイの塔(難易度♠♠♠) [#z1...
ハノイの塔とは、次のようなパズルである。
[math]n[/math]枚の大きさが異なる円盤がある。
大きな円盤を小さな円盤の上に置くことはできず、円盤を置く...
今、A にすべての円盤が下から大きい順に積まれている。
すべての円盤を C に移動させるには、どうしたらいいか。
5段のハノイの塔を解く手順を出力するプログラムを作成せよ。
----
*13A-5: 配列のコピー(難易度♠♠) [#xae0cf1a]
次の部分プログラムは、配列aの要素を配列bに再帰的にコピー...
プログラムを完成させよ。
#geshi(c){{
/*
* 配列aの要素を配列bに再帰的にコピーする
*/
void copy(int a[], int b[], int from, int to) {
if (from <= to) {
b[from] = a[from];
copy(a, b, , );
}
}
int main(void) {
int a[5] = {1, 2, 3, 4, 5}, b[5];
copy(a, b, 0, 4); // 配列aから配列bへ要素番号0から4ま...
int i;
for (i = 0; i < 5; i++) {
printf("%d\n", b);
}
return 0;
}
}}
----
*13A-6: 人口シミュレーション(難易度♠) [#uc006623]
[math]n[/math]年の人口を[math]P_n[/math]とすると、人口の...
\[ \begin{align} \Delta P_n &= P_n - P_{n-1} = \alpha P_{...
P_n &= (1 + \alpha) P_{n-1} \end{align} \]
ここで、[math]\alpha[/math]は、前年同月比の人口増加率を表...
2015年(7月1日現在)の日本人人口は1億2523万4000人で、前年...
このときの人口増加率が続くとして、50年後(2065年)の日本...
ページ名: