我有这个功能,可以从一个数字计算出最大的数字:

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


返回值是9.840000000000003

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

最佳答案

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


10-07 21:45