JSの再帰関数

再帰関数

  • 再帰とは何ですか?
    • プログラミングの世界では、再帰は自分自身を呼び出す手段です。
    • 再帰関数: 関数内で自分自身を呼び出し、繰り返します。
// 下面这个代码就是一个最简单的递归函数
// 在函数内部调用了自己,函数一执行,就调用自己一次,在调用再执行,循环往复,没有止尽
function fn() {
  fn()
}
fn()
  • 実際、再帰関数はループと非常によく似ています。

  • 初期化、自己インクリメント、コード実行、条件判断が必要です。そうでない場合は、デッド再帰と呼ばれる無限の再帰関数になります。

次に、再帰を使用していくつかの問題を解決します

2.1 再帰を使用して 100 の階乗を求める

  • アイデア: 100 の階乗を求めると、100 の 99 倍の階乗になります。これは、n の階乗に対する n*(n-1) の積に相当します。
function a(n) {
    if (n == 1) {
        return 1
    }
    return a(n - 1) * n
}
console.log(a(100));

2.2 要件を満たす再帰関数 dep() を作成します。年収は 10,000 で、年間増加率は 0.5% なので、50 年後の給与はいくらになりますか?

  • アイデア: 10,000 から毎年増加し、年間作業量は昨年の 1.005 倍になります
function dep(y) {
    if (y == 1) {
        return 10000
    }
    return dep(y - 1) * 1.005
}
var a = dep(50)
console.log(a);

2.3 再帰を使用してフィボナッチ数列を見つける

  • フィボナッチ数列 :1 1 2 3 5 8 13 21 34 ...
  • 関数を作成し、5 を渡して出力します。フィボナッチ数列の 5 桁目は何ですか?
  • アイデア: まず、最初の項目と 2 番目の項目が両方とも 1 であることがわかります。再帰するとき、n が 1 または 2 に等しい場合、1 を返して再帰を終了します。その後、次の追加が行われることがわかります。最初の 2 つの数値は 3 番目の数値と等しいため、n 番目の数値は n-1 番目と n-2 番目の数値の加算に等しいため、再帰を使用します。
function fun(n) {
    if (n == 1 || n == 2) {
        return 1
    }
    return fun(n - 1) + fun(n - 2)
}
var res = fun(5)
console.log(res);

おすすめ

転載: blog.csdn.net/liu0218/article/details/126549252
おすすめ