Эта проблема
Это Задача 2 из Проект Euler Анкет
Каждый новый термин в последовательности Fibonacci генерируется путем добавления двух предыдущих терминов. Начиная с 1 и 2, первые 10 терминов будут:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …
Рассматривая термины в последовательности Фибоначчи, которые не превышают n-й член, найдите сумму равномерных терминов.
Давай начнем
Инициализируйте переменные и общие функции:
var test_values = [10, 18, 23, 43]; // list of numbers we wanna test
// this function execute the code and records the time to execute
function run_function(func, test_values) {
for(var i in test_values){
console.log('Test value:', test_values[i]);
var t0 = performance.now();
console.log('Output:', func(test_values[i]));
var t1 = performance.now();
console.log("Took " + (t1 - t0) + " milliseconds.");
console.log();
}
}
Попытка № 1: рекурсивные функции
Рекурсивный путь …
function fiboEvenSum(n) {
var fib_nums = [1, 2];
fib_nums = add(n, fib_nums);
var sum = 0;
for(var i in fib_nums){
if(fib_nums[i]%2===0){
sum = sum + fib_nums[i]
}
}
return sum;
}
function add(n, fib_nums){
var c = fib_nums[fib_nums.length-1] + fib_nums[fib_nums.length-2];
fib_nums.push(c);
if(fib_nums.lengthВыход:
Test value: 10 Output: 44 Took 0.13000000035390258 milliseconds. Test value: 18 Output: 3382 Took 0.05999999848427251 milliseconds. Test value: 23 Output: 60696 Took 0.1049999991664663 milliseconds. Test value: 43 Output: 350704366 Took 0.08000000525498763 milliseconds.
Вот мое решение, может ли это быть лучше?
Это мой Проект Euler Challenge путешествие; Кто -нибудь хочет сделать это вместе? Это будет весело, и мы можем узнать кое -что, решая эту проблему по -разному.
Оригинал: “https://dev.to/jinglescode/project-euler-problem-2-even-fibonacci-numbers-3nge”