JavaScriptの再帰例
11969 ワード
こんにちは皆さん、今日、私たちはどのように再帰が働くかを理解するためにJavaScriptでいくつかの単純な再帰例を見るつもりです.
再帰とは何か
関数が直接または間接的に呼び出すプロセスを再帰と呼び、対応する関数を再帰関数と呼ぶ.再帰的アルゴリズムを用いると,ある問題は非常に容易に解決できる.
再帰の例を見る
例1 -数字の合計
n = = = 0の場合、数は0で、0として返します
論理 113 %
q = 11とr = 3 11 % 10
q = 1とr = 1 1 % 10
q = 0とr = 1 3 + 1 + 1 = 5
例2 -電源
指数が0ならば、電源は0で、1を返す
指数が1ならば、電源が1であるので、我々はそれがそうであるように、ベースを返します
論理
パワー( 2 , 5 ) 2 * ( 2 , 5 - 1 ) = 4 2 * ( 2 , 4 - 1 ) = 3 2 * ( 2 , 3 - 1 ) = 2 2 * ( 2 , 2 - 1 ) = 1 2 * ( 2 , 1 - 1 ) = 0ですので、1を返します それで、それは2 * 4回2または2 * 2 * 2 * 2 * 2 = 32になります
例
Number 1が負であるならば、我々はそれをPostive
ナンバー2
number 2が0の場合、Number 1をそのまま返します
論理
GCD ( 48 , 18 )
エクセル定理
48/18 = Q - 2とR = 12
18/12 = q = 1とr = 6
Rがゼロのとき、12/6 = q = 2とR = 0
GCD ( 48 , 18 )
その後gcd ( 18 , 48 % 18 = gcd ( 18 , 12 )= gcd ( 12 , 6 )= gcd ( 6 , 0 )
最後のGCD関数では、Numbers 2は0です.
例4 - decimaltobinary
数が0ならば0を返す
論理
15
15 % 2 = Q - 7とR - 1
7 % 2 = Q - 3とR - 1
3 % 2 = Q - 1とR = 1
1 % 2 = q - 0とr = 1
すべてのRを一緒にすること- 15のバイナリ当量である1111
例5 -階乗
数が1ならば、階乗は1です
ロジック
番号= 4
num *階乗( num - 1 )の意味
4 *( 4 - 1 )*( 3 - 1 )*( 2 - 1 )* 1 = 4 * 3 * 2 * 1 * 24 * 1 = 24
例6 -フィボナッチ
1
基本的に私たちのFIB関数は再帰的にツリーのより多くのブランチを作成するようになります
これらはいくつかの再帰の例であり、多くの学ぶことです.だから、行って、できるだけ多くを学ぶことができます.
私はDSAを学んで、私ができるだけ多くの概念を理解しようとしています.
このポストを読んでくれてありがとう.
Instagram
再帰とは何か
関数が直接または間接的に呼び出すプロセスを再帰と呼び、対応する関数を再帰関数と呼ぶ.再帰的アルゴリズムを用いると,ある問題は非常に容易に解決できる.
再帰の例を見る
例1 -数字の合計
function sum_of_digit(n)
{
if (n == 0)
return 0;
return (n % 10 + sum_of_digit(parseInt(n / 10)));
}
var num = 113;
var result1 = sum_of_digit(num);
console.log(result1);
Output -
5
作業n = = = 0の場合、数は0で、0として返します
論理
q = 11とr = 3
q = 1とr = 1
q = 0とr = 1
例2 -電源
function power(base,exp){
if(exp === 0 ){
return 1
}
else if(exp === 1){
return base
}
else{
return base*power(base,exp - 1);
}
}
var result2 = power(2,5);
console.log(result2);
output -
32
作業指数が0ならば、電源は0で、1を返す
指数が1ならば、電源が1であるので、我々はそれがそうであるように、ベースを返します
論理
パワー( 2 , 5 )
例
function GCD(num1,num2){
if(num1 < 0){
num1 = -1 * num1;
}
else if(num2 < 0){
num2 = -1 * num2
}
else if(num2 === 0){
return num1
}
else{
return GCD(num2 , num1%num2)
}
}
var result3 = GCD(48,18);
console.log(result3);
output-
6
作業Number 1が負であるならば、我々はそれをPostive
ナンバー2
number 2が0の場合、Number 1をそのまま返します
論理
GCD ( 48 , 18 )
エクセル定理
48/18 = Q - 2とR = 12
18/12 = q = 1とr = 6
Rがゼロのとき、12/6 = q = 2とR = 0
GCD ( 48 , 18 )
その後gcd ( 18 , 48 % 18 = gcd ( 18 , 12 )= gcd ( 12 , 6 )= gcd ( 6 , 0 )
最後のGCD関数では、Numbers 2は0です.
例4 - decimaltobinary
function decimalTobinary(num){
if(num === 0){
return 0;
}
else{
return (num%2 + 10*decimalTobinary(parseInt(num/2)));
}
}
var result4 = decimalTobinary(15);
console.log(result4);
1111
作業数が0ならば0を返す
論理
15
15 % 2 = Q - 7とR - 1
7 % 2 = Q - 3とR - 1
3 % 2 = Q - 1とR = 1
1 % 2 = q - 0とr = 1
すべてのRを一緒にすること- 15のバイナリ当量である1111
例5 -階乗
function factorial(num){
try {
if(num === 1){
return num
}
else{
return num * factorial(num - 1);
}
} catch (e) {console.log("not a number!!")}
}
console.log(factorial(20))
output -
2432902008176640000
作業数が1ならば、階乗は1です
ロジック
番号= 4
num *階乗( num - 1 )の意味
4 *( 4 - 1 )*( 3 - 1 )*( 2 - 1 )* 1 = 4 * 3 * 2 * 1 * 24 * 1 = 24
例6 -フィボナッチ
function Fibonacci(num) {
try {
if(num in [0,1])
{
return num;
}
else{
return Fibonacci(num-1) + Fibonacci(num-2);
}
} catch (e) {console.log("not a number")}
}
for(let i=0;i<5;i++){
console.log(Fibonacci(i));
}
output -
0
1
1
2
3
作業1
基本的に私たちのFIB関数は再帰的にツリーのより多くのブランチを作成するようになります
これらはいくつかの再帰の例であり、多くの学ぶことです.だから、行って、できるだけ多くを学ぶことができます.
私はDSAを学んで、私ができるだけ多くの概念を理解しようとしています.
このポストを読んでくれてありがとう.
Reference
この問題について(JavaScriptの再帰例), 我々は、より多くの情報をここで見つけました https://dev.to/shubhamtiwari909/recursion-examples-in-javascript-5h10テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol