closestFibonacciBelow()

Вычислить ближайшее число Фибоначчи, меньшее либо равное заданному n (последовательность Фибоначчи: 1-ое число - 1, 2-ое - 1, каждое следующее равно сумме двух предыдущих).

by l_gordienkova

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/mocha/2.4.5/mocha.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/chai/3.5.0/chai.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/mocha/2.4.5/mocha.min.css">
<div id="mocha">
</div>
<script>
  mocha.setup('bdd');
  chai.should();
  var assert = chai.assert;
  var expect = chai.expect;

</script>
<script>
  describe("closestFibonacciBelow", function() {
  	before(function () {
      chai.config.includeStack = false;
    });
    describe("формат", function() {
      it("объявлена", function() {
        assert.isFunction(closestFibonacciBelow);
      });
      it("принимает один аргумент", function() {
        assert.equal(closestFibonacciBelow.length, 1);
      });
    });

    describe("основные тесты", function() {
      it("1", function() {
        assert.equal(closestFibonacciBelow(1), 1);
      });
      it("2", function() {
        assert.equal(closestFibonacciBelow(2), 2);
      });
      it("3", function() {
        assert.equal(closestFibonacciBelow(3), 3);
      });
      it("4", function() {
        assert.equal(closestFibonacciBelow(4), 3);
      });
      it("5", function() {
        assert.equal(closestFibonacciBelow(5), 5);
      });
      it("10", function() {
        assert.equal(closestFibonacciBelow(10), 8);
      });
      it("100", function() {
        assert.equal(closestFibonacciBelow(100), 89);
      });
      it("10000", function() {
        assert.equal(closestFibonacciBelow(10000), 6765);
      });
    });

    describe("сложные тесты", function() {
    	var enablePerformanceTests = true;
      if(enablePerformanceTests){
        it("пятидесятый номер", function() {
          this.timeout(500);
          assert.equal(closestFibonacciBelow(12586269026), 12586269025);
        });
        it("семидесятый номер", function() {
          this.timeout(500);
          assert.equal(closestFibonacciBelow(190392490800000),...

JavaScript

function closestFibonacciBelow(n){
 var a = 1;
 var b = 1;
 while(b<=n){
	var c = a+b;
	a = b;
	b = c;
 }
 return a;
}