Recursion/ja

From Free Pascal wiki
Jump to: navigation, search

English (en) français (fr) 日本語 (ja) 中文(中国大陆)‎ (zh_CN)

4E - 再帰 (著者: Tao Yue, 状態: 原文のまま修正なし)

再帰 とは関数や手続きがある条件が満たされるまで自分自身を呼び出すことである。

数学における大文字の sigma (Σ) で示される合計関数は再帰的に書くことができる。

function Summation (num : integer) : integer;
begin
  if num = 1 
  then Summation := 1
  else Summation := Summation(num-1) + num
end;

3Summation を呼び出したとしよう。

a := Summation(3);
  • Summation(3)Summation(2) + 3 になる。
  • Summation(2)Summation(1) + 2 になる、
  • 1 になると、再帰は終了し、 1 になる。
  • Summation(2)1 + 2 = 3 になる。
  • Summation(3)3 + 3 = 6 になる。
  • a6 になる。

再帰は答えが定義されているある時点に達するまで後ろ向きに働く。それから、その定義を基にした他の定義を解きながら、その定義に対しては前向きに働く???(Recursion works backward until a given point is reached at which an answer is defined, and then works forward with that definition, solving the other definitions which rely upon that one.)。

再帰手続きや再帰関数はすべてその再帰が基準条件で止まるかテストするべきである。基準条件以外のすべての条件では再帰はどんどん深くなっていくだろう。もし、基準条件がないと、再帰は全く起きないか、無限状態のいずれかになるだろう。

上の例では、基準条件は if num = 1 である。

previous contents next