Oliver Eyton-Williams ee1e8abd87
feat(curriculum): restore seed + solution to Chinese (#40683)
* feat(tools): add seed/solution restore script

* chore(curriculum): remove empty sections' markers

* chore(curriculum): add seed + solution to Chinese

* chore: remove old formatter

* fix: update getChallenges

parse translated challenges separately, without reference to the source

* chore(curriculum): add dashedName to English

* chore(curriculum): add dashedName to Chinese

* refactor: remove unused challenge property 'name'

* fix: relax dashedName requirement

* fix: stray tag

Remove stray `pre` tag from challenge file.

Signed-off-by: nhcarrigan <nhcarrigan@gmail.com>

Co-authored-by: nhcarrigan <nhcarrigan@gmail.com>
2021-01-12 19:31:00 -07:00

1.8 KiB
Raw Blame History

id, title, challengeType, videoUrl, dashedName
id title challengeType videoUrl dashedName
5900f36e1000cf542c50fe81 问题2斐波那契数列中的偶数 5 problem-2-even-fibonacci-numbers

--description--

在斐波那契数列中每一项都是前两项的和第一项和第二项除外。如果从1和2开始前十项是

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

求出斐波那契数列中值是偶数的项的和,至第n项(包括第n项)为止。

--hints--

fiboEvenSum(10)应该返回188。

assert.strictEqual(
  fiboEvenSum(10),
  188,
  '<code>fiboEvenSum(10)</code> should return 188.'
);

fiboEvenSum(23)应该返回60696。

assert.strictEqual(
  fiboEvenSum(23),
  60696,
  '<code>fiboEvenSum(23)</code> should return 60696.'
);

fiboEvenSum(43)应该返回1485607536。

assert.strictEqual(
  fiboEvenSum(43),
  1485607536,
  '<code>fiboEvenSum(43)</code> should return 1485607536.'
);

您的函数未使用我们的测试值返回正确的结果。

assert.strictEqual(
  fiboEvenSum(18),
  3382,
  'Your function is not returning the correct result using our tests values.'
);

您的函数应返回even数值。

assert.equal(
  fiboEvenSum(31) % 2 === 0,
  true,
  'Your function should return an <code>even</code> value.'
);

--seed--

--seed-contents--

function fiboEvenSum(n) {

  return true;
}

--solutions--

const fiboEvenSum = (number) => {
  if (number <= 1) {
    return 0;
  } else {
    let evenSum = 0,
      prevFibNum = 1,
      fibNum = 2; // According to problem description our Fibonacci series starts with 1, 2
    for (let i = 2; fibNum <= number; i++) {
      if (fibNum % 2 == 0) {
        evenSum += fibNum;
      }
      [prevFibNum, fibNum] = [fibNum, prevFibNum + fibNum];
    }
    return evenSum;
  }
};