0

我有这个函数可以从一个数字中计算出最大的数字:

function maxDigit(n){
  if(n == 0){ 
       return 0;
      }
  else{
    return Math.max(n%10, maxDigit(n/10));
  }
}
console.log(maxDigit(16984));

返回值为 9.840000000000003

如何修改此代码以仅返回值 9 ?

4

5 回答 5

1

Javascript 中没有整数 div,这就是使用“/”时的意思。
所以要么使用 Math.floor,要么减去余数:

function maxDigit(n){
  if(n == 0){ return 0;}
  else{
    var remainder = n % 10
    return Math.max(remainder, maxDigit((n-remainder)*1e-1));
  }
}
console.log(maxDigit(16984));

// output is 9

(迭代版本很容易推断:

function maxDigit(n){
  n= 0 | n ;
  var max=-1, remainder=-1;
  do {
    remainder = n % 10;
    max = (max > remainder ) ? max : remainder ;
    n=(n-remainder)*1e-1;
  } while (n!=0);
  return max;
}

console.log(maxDigit(16984));
// output is 9

console.log(maxDigit(00574865433));
// output is 8

)

于 2013-09-12T10:13:44.157 回答
1
function maxDigit(n){
  if(n == 0){ return 0;}
  else{
    return Math.max(n%10, maxDigit(Math.floor(n/10)));
  }
}
console.log(maxDigit(16984));

与 Python 和其他语言不同,如果您将整数除以一个不是它们的因数的数字,Javascript 会将它们转换为浮点数。

于 2013-09-12T10:13:48.817 回答
1

看一下这个:

function maxDigit(n) {

    var a = n.toString();
    var b = a.split('');

    return Math.max.apply(null, b);
}
于 2016-03-06T16:53:40.787 回答
0

尝试

Math.floor(maxDigit(16984));

Math.floor 返回小于或等于数字的最大整数。

于 2013-09-12T10:13:06.170 回答
0

尝试以下任何方法:

Math.floor( maxDigit(16984) );
Math.ceil( maxDigit(16984) ); 
Math.round( maxDigit(16984));
于 2013-09-12T10:16:36.997 回答