Japanese subtitles

← 25-03 Using Recursion

25-03 Using Recursion

Get Embed Code
4 Languages

Showing Revision 1 created 07/21/2014 by osawakjvta.

  1. 受講生WQ・フェンさんの質問です
  2. “再帰定義とwhileループは
    どのように使い分けるのですか?”
  3. いい質問ですね
  4. 問題を解くことができるという点では
  5. 再帰でできることは
    何でもwhileループでもできますし
  6. whileループでできることは何でも再帰でもできます
  7. どの問題でもどちらの方法でも解くことができます
  8. 通常はwhileループで問題を解く方が効率的です
  9. 次々に関数を呼び出すことによる
    オーバヘッドがないからです
  10. ですが再帰を使った方が
    簡潔で明快に解ける場合もよくあります
  11. したがって何を重視するかによりますが
  12. どちらかを選ぶとしたら
    簡潔で明快に解く方が有効な場合が多いでしょう
  13. パフォーマンスの違いは
    おそらく計測できないほどわずかです
  14. 非常に大きな入力を使って
    注意深く時間を計測しない限り
  15. 違いに気づかないでしょう
  16. より重要なのは適切な解き方を選んで
  17. 書きやすくて他の人も理解しやすい
    コードにすることです
  18. そのためには多くの問題では
    再帰を使う解法が適しています
  19. 再帰の方が繰り返しよりも
    コードがはるかに短くなるので
  20. 内容を理解してたどりやすくなります
  21. 一方パフォーマンスが問題になる場合として
    フィボナッチ数列の例がありましたね
  22. 途中で膨大な数の呼び出しが発生すると
  23. 時間がかかりすぎて
    再帰的には処理できないかもしれません
  24. その場合は複雑な解法にはなりますが
  25. 再帰呼び出しを避けて
    whileループを使った方がいいでしょう