首页 > 解决方案 > C++ 到 javascript 的转换

问题描述

我正在做的问题是:

编写一个 JavaScript 程序来创建一个函数,该函数返回将给定数字替换为数字之和所需的次数,直到它转换为单个数字。就像给定的数字是 123 一样,将其转换为单个数字所需的次数是 1 (1+2+3=6)。您的输出代码应采用格式 console.log("Result is ", variableName)

我找不到这个问题的解决方案,所以我用谷歌搜索并找到了这个页面

此页面上的代码是 C/C++、Java 等...我拿了 C++ 代码并尝试自己将其转换为 javascript,结果如下:

var num=prompt("Enter a number");
var a= num.toString();

function test(x) 
{var temporary_sum = 0, count = 0; 

while (x.length() > 1) 
{ 
    temporary_sum = 0; 

    // computing sum of its digits 

    for (var i = 0; i < x.length(); i++) 
        temporary_sum += ( x[ i ] - '0' ) ; 

    // converting temporary_sum into string 
    // x again .

    x = temporary_sum.toString() ; 

    // increase the count 

    count++; 
 } 

 return count; 
} 

var output = test(a) ;
console.log("Result is: ", output);

此代码根本不提供任何输出。我怎样才能解决这个问题?有没有更好的方法来回答这个问题?

标签: javascriptfor-loopwhile-loop

解决方案


这是使用递归的更好方法。和reduce

function test(x,count=0){
  if(String(x).length === 1) return count;
  let sum = String(x).split('').reduce((ac,a) => Number(a) + ac,0);
  return test(sum,++count);
} 
console.log(test(123))  //1
console.log(test(456))  //2
console.log(test(99999999999))  //3


推荐阅读