再帰関数の機能:
1、関数が自分自身を呼び出します
2、一般的には戻ります
3、一般的なパラメータが存在します
注意:
****再帰ループは、すべてが行うことができます行うことができますが、また、サイクルを解決するために問題を解決することは容易ではありません
****時々再帰を理解していない正しく(のでルーチンの)機能を実装する方法であります
明示的再帰の使用を禁止する一般企業ではなく、再帰を理解しても、プログラマのための知識です!!!!
同社は、次のような理由から、再帰を許可しない理由については:
ケース:100から1が計算され、
一般的なループを使用します。
<スクリプト> 機能追加(){ VARの和= 0 のための(VARは、 I 1 =; I <=; I ++ ){ 合計 + = I } リターン(和) } のdocument.write(ADD( 100 )) </スクリプトは>
5050の結果
再帰的に考えました:
再帰的なルーチンを書きます:
1.臨界値、(チェーンの破断再帰的、再帰的な実現のために)計算されていない一般的に初期値の必要性を探します
この時間は、以前の関係で計算された検索2
3.コール独自の計算前
次いで、それを1〜100のいずれかに応じて算出されます
定義された関数は、(追加)
明らかに、最初の計算はカウントし1であり、結果は1であり、それは1の初期値を発見しました
そして、私たちが知ることができ、あなたが第九をカウントしたい場合は、我々は+10 9日を必要とする、つまり、
(10)を追加=(9)を追加+10
一般的なルールが見つかったので、:追加(N)=追加(N-1)+ N
あなたが書くことができますので、だから、再帰関数:
<スクリプト> 機能追加(){ VARの和= 0 であれば(== 1 ){ リターン 1 。 } 和 =追加(a-1)+ リターン和。 } のdocument.write(ADD( 100 )) </スクリプト>
再帰的な思考が作るコードの量を減らすために、非常に興味深いです
しかし、それはまた、致命的な弱点があります。
彼らのメモリリソース、通話機能の無駄である、プログラムがメモリ空間を割り当てます、プログラムがリリース上で実行することができます
しかし、アイデアは、再帰関数呼び出し自体の多くを行いますが、計算された値で、次の値が前にリリースされていないメモリを割り当てられている、計算することができないではありません
私たちは、再帰的に限界まで、機能は、作業の高速を完了し、メモリを解放するときは、非常に迅速にこれを行うには、コンピュータの速度、それはあまりにも多くのメモリのハードウェアになります
私たちは100億に1を計算する場合は、この小さなプログラムは、コンピュータがクラッシュし、会社の作業は非常に危険なことができ再帰関数を使用しているすべてのメモリを占有して終了してもよいことは明らかです!!!!