我有这个函数来计算数字中的最大数字:
function maxDigit(n){
if(n == 0){
return 0;
}
else{
return Math.max(n%10, maxDigit(n/10));
}
}
console.log(maxDigit(16984));
,返回值为9.840000000000003
如何修改此代码才能返回值9?
答案 0 :(得分: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
)
答案 1 :(得分: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将整数转换为浮点值,如果用一个不是它们因素的数字除以它们。
答案 2 :(得分:0)
尝试
Math.floor(maxDigit(16984));
Math.floor返回小于或等于数字的最大整数。
答案 3 :(得分:0)
尝试以下任何一项:
Math.floor( maxDigit(16984) );
Math.ceil( maxDigit(16984) );
Math.round( maxDigit(16984));
答案 4 :(得分:0)
检查出来:
function maxDigit(n) {
var a = n.toString();
var b = a.split('');
return Math.max.apply(null, b);
}