Difference between revisions of "Basic Pascal Tutorial/Chapter 4/Recursion/ja"
From Lazarus wiki
Jump to navigationJump to search (Created page with "{{Recursion/ja}} 4E - 再帰 (著者: Tao Yue, 状態: 原文のまま修正なし) '''Recursion''' means allowing a function or procedure to call itself until some limit is...") |
|||
Line 3: | Line 3: | ||
4E - 再帰 (著者: Tao Yue, 状態: 原文のまま修正なし) | 4E - 再帰 (著者: Tao Yue, 状態: 原文のまま修正なし) | ||
− | ''' | + | '''再帰''' とは関数や手続きがある条件が満たされるまで自分自身を呼び出すことである。 |
− | + | 数学における大文字の ''sigma'' (Σ) で示される合計関数は再帰的に書くことができる。 | |
<syntaxhighlight> | <syntaxhighlight> | ||
function Summation (num : integer) : integer; | function Summation (num : integer) : integer; | ||
Line 15: | Line 15: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | <tt>3</tt> で <tt>Summation</tt> を呼び出したとしよう。 | |
<syntaxhighlight> | <syntaxhighlight> | ||
a := Summation(3); | a := Summation(3); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | * <tt>Summation(3)</tt> | + | * <tt>Summation(3)</tt> は <tt>Summation(2) + 3</tt> になる。 |
− | * <tt>Summation(2)</tt> | + | * <tt>Summation(2)</tt> は <tt>Summation(1) + 2</tt> になる、 |
− | * | + | * <tt>1</tt> になると、再帰は終了し、 <tt>1</tt> になる。 |
− | * <tt>Summation(2)</tt> | + | * <tt>Summation(2)</tt> は <tt>1 + 2 = 3</tt> になる。 |
− | * <tt>Summation(3)</tt> | + | * <tt>Summation(3)</tt> は <tt>3 + 3 = 6</tt> になる。 |
− | * <tt>a</tt> | + | * <tt>a</tt> は <tt>6</tt> になる。 |
− | + | 再帰は答えが定義されているある時点に達するまで後ろ向きに働く。それから、その定義を基にした他の定義を解きながら、その定義に対しては前向きに働く???(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.)。 | |
− | + | 再帰手続きや再帰関数はすべてその再帰が基準条件で止まるかテストするべきである。基準条件以外のすべての条件では再帰はどんどん深くなっていくだろう。もし、基準条件がないと、再帰は全く起きないか、無限状態のいずれかになるだろう。 | |
− | + | 上の例では、基準条件は <tt>if num = 1</tt> である。 | |
{|style=color-backgroud="white" cellspacing="20" | {|style=color-backgroud="white" cellspacing="20" |
Revision as of 10:41, 2 September 2015
4E - 再帰 (著者: Tao Yue, 状態: 原文のまま修正なし)
再帰 とは関数や手続きがある条件が満たされるまで自分自身を呼び出すことである。
数学における大文字の sigma (Σ) で示される合計関数は再帰的に書くことができる。
function Summation (num : integer) : integer;
begin
if num = 1
then Summation := 1
else Summation := Summation(num-1) + num
end;
3 で Summation を呼び出したとしよう。
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 になる。
- a は 6 になる。
再帰は答えが定義されているある時点に達するまで後ろ向きに働く。それから、その定義を基にした他の定義を解きながら、その定義に対しては前向きに働く???(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 |