この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。

BFE.devでのAI解答例 - JavaScript コーディング問題
93. Fibonacci数をrecursionで計算する

正常に動かすのは難しいですが、再帰を使用する可能性があるアプローチについてはいくつかあります。

  1. メモ化

このアプローチでは、再帰を使用してFibonacci数を計算するが、計算済みの数値を保持するキャッシュを使用して、同じ計算を複数回行わないようにすることで、計算時間を節約します。

const fib = (n, cache = {}) => {  if (n === 0) return 0;  if (n === 1) return 1;  if (cache[n]) return cache[n];  const result = fib(n - 1, cache) + fib(n - 2, cache);  cache[n] = result;  return result;}fib(10); // 55fib(1000); // 正常に動作しない
  1. 末尾再帰

このアプローチでは、末尾再帰を使用してFibonacci数を計算します。末尾再帰は、最後の操作が再帰呼び出しである再帰関数のことで、JavaScriptがこの種類の再帰を自動的にループに変換するため、スタックオーバーフローを避けることができます。

const fib = (n, a = 0, b = 1) => {  if (n === 0) return a;  if (n === 1) return b;  return fib(n - 1, b, a + b);}fib(10); // 55fib(1000); // 正常に動作しない

どちらのアプローチも、fib(1000)を正常に動作させることはできませんが、末尾再帰により大幅に高速化されているため、キャッシュを使用する場合のように、さまざまな入力値に対応できます。