JavaScriptの累積、反復、貧困、再帰などの一般的なアルゴリズムの例のまとめ
4824 ワード
本論文の実例は、JavaScript反復、反復、貧困、再帰などの一般的なアルゴリズムを述べている.皆さんに参考にしてあげます.具体的には以下の通りです.
累積と累積
アキュムレータ:一連のデータを変数に加算します.最後の積み重ねの結果
例えば、1から100までの数を合計します.
小さいボールは高いところから落ちて、毎回もとの半分に戻って、第10回の小さいボールが地面に落ちる時小さいボールの歩いたことがある道のりを求めます.
よくあるのはnの階乗です.
アキュムレス:V+=e
累積:v*=e
Vはアキュムレータと累積を表し、eはアキュムレータ/累積項目を表します.
アルゴリズムのポイント:
(1)初期化
vとeを初期化します
アキュムレータ:v=0
累積:v=1
eの初期化は、アキュムレータ/積項が複雑であれば、円周率を計算する問題など、いくつかのサブ項に分解してそれぞれ初期化することができ、累積項は符号、分子、分母の3つの部分に分解される.
(2)サイクルの制御条件
一つは固定回数で、例えばジャンプ距離を計算する問題、数列前の20項の和を計算する問題、
回数は固定ではなく、ある条件を満たすために必要です.円周率の計算には最後の項の絶対値が必要です.10-6より小さいです.
(3)アキュムレータ/積項の変化を確定する
たとえば、数列の前20項の和は、現在の分子を次の分母とし、現在の分母を分子とします.
また、例えば円周率を求める問題は、符号を逆にとり、分母を2に加え、次の項目を出すことです.
反復
反復法はつまり転々とする方法である.
規則:古いものをどんどん使って新しい値に達することができます.
反復問題に会ったらどう解決しますか?
1. 反復変数(古い値)が見つかりました.
2. 反復の関係を決定します.
3. 欲しい結果が分かりますか?
(1)最終結果を知ることです.
(2)サイクルの回数
数学の法則を見つけます.数式を通して次の項目の値を計算します.
例えば、ウサギの産子:前の二つの項目から次の項目を獲得します.
貧しい挙挙
問題があったら、もっといい解決方法が見つからないです.(数学の公式や規則が見つからない)時、「最も愚か」な方法を使って、コンピュータを利用してスピードの速い特徴を計算して、すべての可能性を全部並べます.
そして、私たちが得たい結果を記録します.
実例:三桁の数字があります.百桁の数字は十桁の数字より大きいです.そして、皆さんの数字の和は皆さんの数字の積に等しいです.この三桁の数字を求めてください.
再帰する
再帰とは、関数の内部でまた自分を呼び出すことです.
例えば、階乗の問題を求めて、fact関数の内部でまたfact関数を呼び出しました.
再帰は実際には、規模がnの問題をn-1に値下げして解決します.nとn-1の関係を探します.
もっと多くのJavaScriptに関する内容について興味がある読者は、当駅のテーマを見ることができます.「JavaScript数学演算用法まとめ」、「JavaScriptデータ構造とアルゴリズム技術まとめ」、「JavaScript配列操作技術まとめ」、「JavaScript事件に関する操作とテクニック大全」、「JavaScript操作DOM技巧まとめ」及び「JavaScript文字と文字列操作テクニックのまとめ」
本論文で述べたように、JavaScriptプログラムの設計に役に立ちます.
累積と累積
アキュムレータ:一連のデータを変数に加算します.最後の積み重ねの結果
例えば、1から100までの数を合計します.
小さいボールは高いところから落ちて、毎回もとの半分に戻って、第10回の小さいボールが地面に落ちる時小さいボールの歩いたことがある道のりを求めます.
var h=100;
var s=0;
for(var i=0;i<10;i++){
h=h/2;
s+=h;
}
s=s*2+100;
累積:一連のデータを一つの変数に積積し、累積した結果を得る.よくあるのはnの階乗です.
var n=100;
var result= 1;
for(var i=1;i<=n;i++){
result *=i;
}
一般的な形式:アキュムレス:V+=e
累積:v*=e
Vはアキュムレータと累積を表し、eはアキュムレータ/累積項目を表します.
アルゴリズムのポイント:
(1)初期化
vとeを初期化します
アキュムレータ:v=0
累積:v=1
eの初期化は、アキュムレータ/積項が複雑であれば、円周率を計算する問題など、いくつかのサブ項に分解してそれぞれ初期化することができ、累積項は符号、分子、分母の3つの部分に分解される.
(2)サイクルの制御条件
一つは固定回数で、例えばジャンプ距離を計算する問題、数列前の20項の和を計算する問題、
回数は固定ではなく、ある条件を満たすために必要です.円周率の計算には最後の項の絶対値が必要です.10-6より小さいです.
(3)アキュムレータ/積項の変化を確定する
たとえば、数列の前20項の和は、現在の分子を次の分母とし、現在の分母を分子とします.
また、例えば円周率を求める問題は、符号を逆にとり、分母を2に加え、次の項目を出すことです.
反復
反復法はつまり転々とする方法である.
規則:古いものをどんどん使って新しい値に達することができます.
反復問題に会ったらどう解決しますか?
1. 反復変数(古い値)が見つかりました.
2. 反復の関係を決定します.
3. 欲しい結果が分かりますか?
(1)最終結果を知ることです.
(2)サイクルの回数
/*
* 1.
* 2.
* 3. */
var num1 = Number(prompt(" "));
var num2 = Number(prompt(" "));
var result = GCD(num1,num2);
alert(result);
/*
* :
* :GCD
* :
* : */
/*
* num1<num2 , num1
*
* num1( ), num2( ) 0,
* num2=>num1,
* =>num2
*
* , num2 */
function GCD(num1,num2){
/*return0;*/
if(num1<num2){
var t = num1;
num1=num2;
num2 = t;
}
var remainder = num1%num2;
while(remainder!= 0){
num1=num2;
num2= remainder;
remainder=num1%num2;
}
returnnum2;
}
さしあげる数学の法則を見つけます.数式を通して次の項目の値を計算します.
例えば、ウサギの産子:前の二つの項目から次の項目を獲得します.
/*
* , ,
*
* , */
/*
* 0 1 2 3 4 5 6
* 1 1 1 2 3 5 8
* 0 0 1 1 2 3 5
* 1 1 2 3 5 8 13
* */
/*
*
*
* (1) <2 1
* (2)
* (an = an-1 +an-2)
* ,
*
* */
/* var month = Number(prompt(" "));
var sum ;
var an =1;
var an_1=1;
var an_2;
if(month < 2){
sum=1;
}else{
sum=2;
for(var i=1; i<month; i++){
sum= an +an_1;
an_1 =an;
an = sum;
}
}
alert(sum);*/
/*
* 2*/
var month = Number(prompt(" "));
var rabbit = [1,1];
for(var m=2;m<=month;m++){
rabbit[m]=rabbit[m-1]+rabbit[m-2];
}
alert(rabbit[month]);
配達推しは順押しと逆押しに分けられます.貧しい挙挙
問題があったら、もっといい解決方法が見つからないです.(数学の公式や規則が見つからない)時、「最も愚か」な方法を使って、コンピュータを利用してスピードの速い特徴を計算して、すべての可能性を全部並べます.
そして、私たちが得たい結果を記録します.
/*
* 5, ,
* , , 、 ?
* x y z
* x + y + z = 100
* x*5 + y * 3 + z/3 = 100*/
for(var cock=0;cock<=20;cock++){
for(var hen=0;hen<=33;hen++){
var chihen=100-cock-hen;
if(100== cock*5+ hen*3+ chihen/3){
document.write(" :"+cock+" :"+hen+" :"+chihen+"<br>")
}
}
}
方法の特徴を挙げます.アルゴリズムが簡単で、それに応じたプログラムも簡単ですが、計算量が多いです.しかし、コンピュータの利点は、演算速度が速いので、このアルゴリズムは、しばしば良い効果を得ることができます.実例:三桁の数字があります.百桁の数字は十桁の数字より大きいです.そして、皆さんの数字の和は皆さんの数字の積に等しいです.この三桁の数字を求めてください.
再帰する
再帰とは、関数の内部でまた自分を呼び出すことです.
例えば、階乗の問題を求めて、fact関数の内部でまたfact関数を呼び出しました.
/* n */
function fact(n){
if(1== n){
return 1
}
return n*fact(n-1);
}
alert(fact(5));
再帰的アルゴリズムは、従来の考え方で理解すると非常に複雑であり、関数は、一層の入れ子コールを呼び出し、その後、もう一つの層に戻って、考え方を変えて再帰的に理解することができる.再帰は実際には、規模がnの問題をn-1に値下げして解決します.nとn-1の関係を探します.
もっと多くのJavaScriptに関する内容について興味がある読者は、当駅のテーマを見ることができます.「JavaScript数学演算用法まとめ」、「JavaScriptデータ構造とアルゴリズム技術まとめ」、「JavaScript配列操作技術まとめ」、「JavaScript事件に関する操作とテクニック大全」、「JavaScript操作DOM技巧まとめ」及び「JavaScript文字と文字列操作テクニックのまとめ」
本論文で述べたように、JavaScriptプログラムの設計に役に立ちます.