JavaScriptの再帰例


こんにちは皆さん、今日、私たちはどのように再帰が働くかを理解するためにJavaScriptでいくつかの単純な再帰例を見るつもりです.
再帰とは何か
関数が直接または間接的に呼び出すプロセスを再帰と呼び、対応する関数を再帰関数と呼ぶ.再帰的アルゴリズムを用いると,ある問題は非常に容易に解決できる.
再帰の例を見る
例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として返します
論理
  • 113 %
    q = 11とr = 3
  • 11 % 10
    q = 1とr = 1
  • 1 % 10
    q = 0とr = 1
  • 3 + 1 + 1 = 5
    例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 )
  • 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になります

    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を学んで、私ができるだけ多くの概念を理解しようとしています.
    このポストを読んでくれてありがとう.
    Instagram