Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marsolim

como somar sequência até ficar 1 número

Recommended Posts

galera to com um probleminha pra somar uma sequência de números até chegar a um número só.

 

exemplo

 

159217=

1+5+9+2+1+7=

25=

2+5=

7

 

tô fazendo isso atualmente em três etapas usando o for mas queria usar um while para fazer tudo numa etapa só. to tentando assim

seq = "159217";
if(seq.length > 0){
    seq = parseInt(seq);
    while(seq.toString().length > 1){
        for(i = 0; i < seq.toString().length; i++){
            res += parseInt(seq.toString().substr(i, 1));
        }
        seq = res;
    }
}

enquanto tem só um algarismo vai de boa mais quando passa de um entra num loop sem fim. o que pode estar errado? agradeço a atenção e ajuda.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

recursivo

var sumArray = function(a, b) { return parseInt(a, 10) + parseInt(b, 10); }

function reduceToOneNumber(seq) {
  var pieces = seq.split('');
  var result = pieces.reduce(sumArray);

  if(String(result).length > 1) {
    result = reduceToOneNumber(String(result));
  }
  return result;
}

var result1 = reduceToOneNumber('1231231231231231231231231231231231');
console.log('result1', result1);

var result2 = reduceToOneNumber('159217');
console.log('result2', result2);
do/while

var sumArray = function(a, b) { return parseInt(a, 10) + parseInt(b, 10); }

function reduceToOneNumber(seq) {
  var pieces;
  var result = seq;

  do {
    pieces = String(result).split('');
    result = pieces.reduce(sumArray);
  }
  while(String(result).length > 1);

  return result;
}

var result1 = reduceToOneNumber('1231231231231231231231231231231231');
console.log('result1', result1);

var result2 = reduceToOneNumber('');
console.log('result2', result2);

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

var s = "17325469";
Array.from(s).reduce(function(total, numero) { return total + parseInt(numero);}, 0);

Compartilhar este post


Link para o post
Compartilhar em outros sites

galera valeu mais acho que vou continuar do jeito que tá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.