Codefights: учитывая целое число n, возвращает наибольшее число, содержащее ровно n цифр

#javascript

#javascript

Вопрос:

Итак, я должен найти наибольшее число, содержащее n цифр. Например, если n= 2, то наибольшее число = 99. Это был мой ответ.

 function largestNumber(n) {
    var num = [];
    n = num.length;
    for(var i = 0; i < n; i  ){
        num[i] = "9";
    };
    var large =  (num.join(''));
    return large;
}
  

К сожалению, он вернул «0». Когда я попытался утешить.запишите массив.

 function largestNumber(n) {
    var num = [];
    n = num.length;
    for(var i = 0; i < n; i  ){
        num[i] = "9";
    };
    return num;
}

console.log(largestNumber(2));
  

Я получил пустой массив вместо [«9», «9»]. Почему мой массив не формируется?

Комментарии:

1. Удалить n = num.length; . Эта строка бессмысленна и отбрасывает параметр, который вы передали функции, путем его сброса 0 .

2. Более простой метод: function largestNumber(n) { return Math.pow(10, n) - 1; }

3. Конечно, 99 это не самое большое число, содержащее ровно две цифры.

4. @georg Что вы имеете в виду? 0xFF ? 9e9 ?

5. @Bergi: да, присваивание довольно неаккуратно сформулировано.

Ответ №1:

Почему бы не использовать (10 ^ n) -1 ?

Math.pow(10,n) -1

Комментарии:

1. Это ответ? (На какой вопрос ??) Это комментарий??

Ответ №2:

Вы сбрасываете n значение 0, присваивая ему n = num.length; значение сразу после определения num как пустой массив. Просто отбросьте эту строку, и все будет в порядке.

Ответ №3:

Использование n в качестве степени 10 и вычитание 1 из результата дает вам правильный ответ для любого целого значения n .

 def largestNumber(n):
    large = (10 ** n) -1
    print(large)
largestNumber(2)
  

Ответ №4:

Я сделал это так:

 function largestNumber(n) {
let number = "9";
for(let i=1;i<n;i  ){
    number  = "9";
}
return parseInt(number);
}