• 検索結果がありません。

「アルゴリズムとデータ構造」資料

N/A
N/A
Protected

Academic year: 2021

シェア "「アルゴリズムとデータ構造」資料"

Copied!
10
0
0

読み込み中.... (全文を見る)

全文

(1)

「アルゴリズムとデータ構造」資料

4

再帰呼び出しについて

奈良女子大学生活環境学部 鴨浩靖

2009

11

17

日 初版

2009

11

18

日 改訂

2011

11

7

日 第二版

2013

10

28

日 第三版

2020

10

20

日 第四版

1 / 10

(2)

再帰呼び出しとは

関数の中から自分自身を直接または間接に呼び出すことを再帰呼 び出しと呼ぶ。

漸化式で定義される数列を計算するには、再帰呼び出しが自然。

その他、再帰呼び出しは用例が多数。

2 / 10

(3)

a

n

= 

 1 n = 0

のとき

a

n12

+ 2a

n1

n > 0

のとき

int asagao(int x) {

if (x == 0)

return 1;

else {

int prev = asagao(x - 1);

return prev * (prev + 2);

} }

3 / 10

(4)

繰り返しとの関係

繰り返しによるプログラムを再帰呼び出しを使うものに書き換え るのは簡単。

再帰呼び出しを繰り返しに書き換えるのは、一般に面倒。

4 / 10

(5)

:

二乗和

n

k=1

k

2を計算する関数の、繰り返しによる実装。

int sqsum(int n) {

int s = 0;

int k;

for (k = 1; k <= n; k ++) { s += k * k;

}

return s;

}

5 / 10

(6)

:

二乗和

(

つづき

)

n

k=1

k

2を計算する関数の、再帰呼び出しによる実装。

int sqsum(int n) {

if (n <= 0) { return 0;

} else {

return sqsum(n - 1) + n * n;

} }

6 / 10

(7)

:

二乗和

(

つづきのつづき

)

新出先生作

int sqsum_aux(int n, int acc) if (n <= 0) {

return acc;

} else {

return sqsum_aux(n - 1, acc + n * n);

} }

int sqsum(int n) {

return sqsum_aux(n, 0);

}

7 / 10

(8)

:

最大公約数

再帰呼び出しによる実装

unsigned int gcd(unsigned int m, unsigned int n) {

return n != 0 ? gcd(n, m % n) : m;

}

8 / 10

(9)

:

最大公約数(つづき)

繰り返しによる実装

unsigned int gcd(unsigned int m, unsigned int n) {

while (n != 0) {

unsigned int k = m % n;

m = n;

n = k;

}

return m;

}

9 / 10

(10)

ACM ICPC 2004

年日本国内予選問題

C

問題は公式ページ参照。

この問題は再帰呼び出しを使って解けば簡単。がんばれば繰り返 しで書けなくはないが、たぶん、労力に見合わない。

解答例は別紙。詳細な解説は白板で。

10 / 10

参照

関連したドキュメント

今後 6 ヵ月間における投資成果が TOPIX に対して 15%以上上回るとアナリストが予想 今後 6 ヵ月間における投資成果が TOPIX に対して±15%未満とアナリストが予想

『国民経済計算年報』から「国内家計最終消費支出」と「家計国民可処分 所得」の 1970 年〜 1996 年の年次データ (

令和元年度予備費交付額 267億円 令和2年度第1次補正予算額 359億円 令和2年度第2次補正予算額 2,048億円 令和2年度第3次補正予算額 4,199億円 令和2年度予備費(

〇なお、令和4年度以降、ミラサポ

[r]

[r]

SuperLig® 樹脂は様々な用途に合うよう開発された。 本件で適用される 2 樹脂( SuperLig®605 は Sr 、 SuperLig®644 は Cs 除去用)は Hanford Tank

マニピュレータで、プール 内のがれきの撤去や燃料取 り出しをサポートする テンシルトラスには,2本 のマニピュレータが設置さ