使用 Horner 递归地将任何基数转换为十进制数

问题描述

我必须编写一个使用递归和霍纳方案从任何基数转换为十进制数的程序。我只能使用的是:

  1. 具有两个参数的 int 方法,例如 public static int horner (int[] digits,int base){}。我必须就地实现该方法,即除了作为参数给出的数组之外,我不能使用任何其他数组。
  2. 一个辅助方法。

我该怎么做?我只有这个,但我知道这毫无意义。我不知道如何实现一个计数器,以便为递归创建一个终止基。

public static int horner (int[] digits,int base) {
    int n = digits.length;
    int a = 0;
    int decimal = digits[0];

    if (n == 0) {
        System.out.println(decimal+digits[a]);
        return digits[a];
    }

    decimal = decimal * base + horner(digits,base);

    return decimal;
}

解决方法

提示: 创建一个辅助方法,它接受一个额外的 index 参数,告诉它要查看的数组索引。帮助程序应递归调用自身,每次递增 index

public static int hornerHelper(int[] digits,int index,int base) {
    // majority of code here
    // recursively call hornerHelper(digits,index + 1,base) at some point
}

然后主函数只需要在第一个索引处启动进程。

public static int horner(int[] digits,int base) {
    return hornerHelper(digits,base);  // start at index 0
}

这不是一个完整的解决方案,但应该足以让您继续前进。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...