📌 JAvascript概念#9再帰関数/数学基本理論(1)


さいきかんすう


貴重な関数とは?


再帰関数は、関数で地神を呼び出す関数です.
この再帰関数にはexitコードが必要であり、特定の条件下で呼び出しを停止することができ、このような終了条件が存在しない場合、無限に繰り返されます.
また、一般的な再帰関数で記述されるコードは、重複文で記述されてもよい.

再帰関数画像の説明



関数はこの順序で実行されます.

1.basic再帰関数:デフォルト再帰関数

function recursive(num) {
  if (num == 0) return 0;
  return num + recursive(num - 1);
}
// 3 + (2 + (1 + 0)) = 0
console.log(recursive(3)); // 6
再帰関数の一般的な形式でnumが0の値を返します.そうしないとnumにrecursive(num-1)関数を加えた値を返します.
numが3の場合は3+2+1+0の順に計算され、最後は0となるので0を返し、計算は終了する.だから、答えは6

2.factorial function:factorial関数

function factorial(x) {
  if (x === 0) return 1;

  return x * factorial(x - 1);
}

const num = 3;

let result = factorial(num); 

// The factorial of 3 is 6
console.log(`The factorial of ${num} is ${result}`);
工場関数は基本的に工場の数学概念を理解しなければならない.

工場とは何ですか。


工場は順番に乗じた数字で、例えば5!5から1の間の数に5×4×3×2×1=120を乗じる.
すなわち、nから1の数に乗算する.
上の式は3から1を乗じた階乗です.
以下は上にも挙げた例の5です!に表示されます.
let result_2;

function recursive(number) {
  if (number == 1) {
    return number;
  }

  return recursive(number - 1) * number;
}

result_2 = recursive(5); // 5! = 5 * 4 * 3 * 2 * 1
console.log(result_2);
// 120 이 나온다.
まずrecursiveという関数でnumberが1の場合numberを返します.
ここで、パラメータは乗算された関数なので、初期化値は1でなければなりません.
numberが1でない場合、再帰関数を再度呼び出し、number-1に以前のnumberを乗じた結果を返します.
これでrecursive(5)=5 x 4 x 3 x 2 x 1となり、120となる.

3.AP関数:等差数列


等差数列はforloopと再帰関数の2つの方法で表すことができ,まず再帰関数を用いる方法は
let Result;

function recursive(s, t, number) {
  if (number == 1) {
    return s;
  } // break point 
  
  return recursive(s, t, number - 1) +t;
}

// [ 등차수열의 동작원리 ]
// number : 5 , recursive(s, t, 4) => 9 + 2 = 11
// number : 4 , recursive(s, t, 3) => 7 + 2 = 9
// number : 3 , recursive(s, t, 2) => 5 + 2 = 7
// number : 2 , recursive(s, t, 1) => 3 + 2 = 5
// number : 1 ==> 3 => 그냥 s값으로 지정된 3을 내보냄

Result = recursive(3, 2, 5);
console.log(Result);
//  따라서, 11 이 나옴.

等差数列は?


等差数列は、連続する2つの項目の間に一定の差がある数列、すなわち、間隔が同じ(公差)数列である.
たとえば、1、3、5、7、9......-->公差2(共通間隔2)
まずresultという空の変数を宣言します.
recursiveにs、t、numberという値を格納します.
numberが1の場合、sが返されます.
-->コメントはブレークポイントです.exitコードと同じです.
numberが1でない場合は、recursiveにs、t、number-1を含む値に-tを加えた値を返します.「注記」を参照してください.

4.幾何配列関数:等比数列


等比数列も等差数列に類似しており,foorloopと再帰関数ともに実現できる.
まず,再帰関数を実現する方法は
let Result_1;

function recursive(s, t, number) {
  if (number == 1) {
    return s;
  }

  return recursive(s, t, number - 1) * t;
}

// [ 등비수열의 동작원리 ]
// number : 5 recursive(s, t, 4) * t => 24 * 2 = 48
// number : 4 recursive(s, t, 3) * t => 12 * 2 = 24
// number : 3 recursive(s, t, 2) * t => 6 * 2 = 12
// number : 2 recursive(s, t, 1) * t => 3 * 2 = 6
// number : 1 ==> 3 => 지정된 s값이 3 이므로

Result_1 = recursive(3, 2, 5);
console.log(Result_1);
// 48 이 나온다.

等差数列は?


等差数列とは、各項目が第1項と一定の割合を有する数列を指し、簡単に言えば、同一の割合(公比)を有する数である.
例)1、2、4、8、16、32…-->公費は2
再帰関数で表される等比数列は、符号*であれば等差数列とほぼ類似している.詳細はコードを参照してください.

5.フィボナッチ数字:フィボナッチ数列


フィボナッチ数列とは何ですか?


第1項と第2項は同じで、第2項は前の2項の加算数列です.
すなわち,第1項が1であるという仮定のもと,1,1,2,3,5,8,13…これは順番に並べられた数列です.
式はf(n)=f(n-1)+f(n-2)
let Result_2;

function recursive(number) {
  if (number == 1 || number == 0) {
    return number;
  }

  // f(n) = f(n-1) + f(n-2)
  return recursive(number - 1) + recursive(number - 2);
}

// [ 피보나치 수열의 동작원리 ]
// number : 5 -> f(4) + f(3) ==> 3 + 2 = 5
// number : 4 -> f(3) + f(2) ==> 2 + 1 = 3
// number : 3 -> f(2) + f(1) ==> 1 + 1 = 2
// number : 2 -> f(1) + f(0) ==> 1 + 0 = 1
// number : 1 ==> 1



Result_2 = recursive(5);
console.log(Result_2);
// 5 가 나온다.
まずresult 2という空の変数を宣言します.
numberが1または0の場合、numberが返されます.(ここで||はor演算子->または)として解釈され、他の場合はrecursive(number-1)とrecursive(number-2)を追加することによって返される.
すなわちnumberが2の場合、recursive(1)とrecursive(0)の場合に1と0の値1を加算しなければならない.