nを入力してフィボナッチ数列のn番目の項を求めます
function fibonacci(n) { if (n < 0) { throw new Error('输入的数字不能小于0'); } if (n == 0) { return 0; } if (n == 1) { return 1; } return fibonacci(n-1) + fibonacci(n-2); }
これは実はあまり良い方法ではありません
例えば、fibonacci(10)を求める場合、fibonacci(9)とfibonacci(8)に分解されますが、fibonacci (9) fibonacci(8) と fibonacci(7) に分解され、そのうち fibonacci(8) は繰り返し計算されます。 最も簡単な方法は、計算された値を記録することです。
function fibonacci2(n) { if (n < 0) throw new Error('输入的数字不能小于0'); let arr = [0, 1]; function calc(n) { if (n<2) { return arr[n]; } if (arr[n] != undefined) { return arr[n]; } let data = calc(n-1) + calc(n-2); arr[n] = data; return data; } return calc(n); } function fibonacciFunc() { let arr = [0, 1]; function calc(n) { if (n < 0) throw new Error('输入的数字不能小于0'); if (n<2) return arr[n]; if (arr[n] != undefined) { return arr[n]; } let data = calc(n-1) + calc(n-2); arr[n] = data; return data; } return calc; } let fibonacci3 = fibonacciFunc();
上記はフィボナッチ数列を js で実装する内容です。その他の関連内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。