具有递归功能的数字的最大位数

时间:2018-11-05 12:30:13

标签: java

我有一个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;
}

我已经尝试过几乎所有的想法,但是我没有正确的方法。

4 个答案:

答案 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
}