Какую формулу я должен использовать, чтобы определить значение на основе данного ввода? - PullRequest
0 голосов
/ 13 февраля 2012

Я думаю, что это больше похоже на вопрос математики, чем на программирование, но, поскольку я пишу Javascript, надеюсь, это простительно.

Я получаю пользовательский ввод, 1, 2, 3 или 4.

if 1, then output is 9

if 2, then output is 99

if 3, then output is 999

Таким образом, в основном ввод представляет количество цифр.

Я признаю, что Я действительно сосу математику . Пытался сломать этот кусок до какой-то формулы например, 9 * 10 + 9 и т. д. в надежде найти какой-то математический подход к этой проблеме, но мой мозг искажается.

Я мог бы сделать это путем конкатенации строк:

var userInput = 3;
var output = "";

for(var i=0; i<userInput; i++) {
    userInput = userInput + "9";
}

console.log(userInput); //now this should have string "999"

return parseInt(userInput); //return as integer 999;

пока выше работает, я думаю, что это действительно ... не круто.

Может ли кто-нибудь показать мне, могу ли я сделать это математическим путем?

Ответы [ 3 ]

4 голосов
/ 13 февраля 2012
output = Math.pow(10,userInput)-1;

Это может сработать. Или:

output = new Array(userInput+1).join("9");

Хотя это, вероятно, менее эффективно.

1 голос
/ 13 февраля 2012

Попробуйте это:

function nines(n) {
    var s = 0, i;
    for (i = 0; i < n; i++) {
        s = s * 10 + 9;
    }
    return s;
}

Конечно, если вам нужна числовая версия, вы будете ограничены максимальным размером числа (если я правильно помню, JavaScript обычно использует числа с плавающей запятой)

1 голос
/ 13 февраля 2012

Math.pow должен сделать это:

Math.pow(10, userInput) - 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...