我有一个Java函数,希望不使用Math.max()转换为递归函数。
static int biggest (int n)
{
int result = 0;
int i = n;
while (i > 0)
{
if(i % 10 > result) result = i % 10;
i = i / 10;
}
return result;
}
我已经尝试过几乎所有的想法,但是我没有正确的方法。
答案 0 :(得分:3)
如果您的作业要将该算法实现为递归函数,则需要删除循环并将其替换为递归调用。
您想要做的是查看输入的最后一位,并查看它是否大于将输入除以10后获得的数字的最大位数。
答案 1 :(得分:2)
考虑以下行:
biggist n =当前数字n>最大剩余数字n?当前:剩饭
答案 2 :(得分:0)
以下几行应该可以起作用:
static int biggest(int n) {
if (n < 10) // base case: single digit
return n;
int digit = i % 10; // last digit
int digitRest = biggest(i / 10); // recursive call
if (digit > digitRest)
return digit;
else
return digitRest;
}
答案 3 :(得分:0)
这样的事情,
static int biggest(int n) {
int n1 = n%10;
int n2 = n/10;
if (n2 == 0) { // base case
return n1;
}
int n3 = biggest(n2); // recurse here
return n1 > n3 ? n1 : n3; // return the max
}